cmdlinesess.tid, который берется из глобального thread_num. sess.tid и файлы оказываются не там и не у тех… тогда надо исправлять ситуацию с global. Сходу это не поправить, но если вчитаться в документацию python.threads и погуглить примеры, есть шанс соорудить свой велосипедик для корректной работы всей этой истории с общими ресурсами. Но это только если дело не в папках/файлах и не в особенностях ОС.
global в thread коде?global. Потоки не могут его корректно использовать, если не сделан механизм сигнализации и блокировки/разблокировки общих ресурсов.
в еще один try/exceptнамекает, что этим оператором пользовались неоднократно. В коде этого не видно.
if x == 0: заменить на if not x:[0, 0, 0]; if x: и каждому соответствующему элементу img присваиваем [255, 255, 255]; нули присваивать не надо, пропускаем