Я использую gevent и все исправляю обезьяньими патчами.
Похоже, что обезьяньи патчи заставляют потоки работать последовательно.
Мой код:
import threading
from gevent import monkey; monkey.patch_all()
class ExampleThread(threading.Thread):
def run(self):
do_stuff() # takes a few minutes to finish
print 'finished working'
if __name__ == '__main__':
worker = ExampleThread()
worker.start()
print 'this should be printed before the worker finished'
Итак, поток работает не так, как ожидалось.
Но если я удалю monkey.patch_all()
, он работает нормально.
Проблема в том, что мне нужен monkey.patch_all()
для использования gevent (теперь показано в коде выше)
Мое решение:
Я изменил
monkey.patch_all()
на
monkey.patch_all(thread=False)
чтобы не патчировать поток.