Использование gevent monkey patching с потоковой обработкой заставляет потоки работать последовательно

Я использую 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)

чтобы не патчировать поток.

22
задан user369450 3 June 2015 в 14:53
поделиться