LINUX.ORG.RU

python не порождает больше 3 потоков при перехвате stdout/stderr


0

1

Есть класс для работы с фтп
В нем включен self.set_debuglevel(3)
И все команды обёрнуты в:

sys.stdout = self.myOut
sys.stderr = self.myOut
...
sys.stdout = self.orig_out
sys.stderr = self.orig_err

сам класс myOut тут - http://pastebin.com/04Yz1uPP

Так вот, с таким перехватом питон не порождает больше 3х потоков:

self.executor = ThreadPoolExecutor(max_workers=mt_cnf)

for i, job in enumerate(jobs):
future = self.executor.submit(self._worker, [i, job, attr])
future.add_done_callback(self.process_result)
self.pending.add(future)

Он просто перестает добавлять новые потоки и в результате их создается всего 3

Если перехват stdout закомментировать, то все в порядке, создается хоть 20 потоков и все работают одновременно.


Питон 3.3.1, система arch

по ссылке какой-то ппц с двумя def write и наверху в шапке почему-то упоминается self. Это действительно такой коду тебя работает?

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.