Używam gevent i jestem małpką łatającą wszystko.
Wygląda na to, że łatanie małpy powoduje, że wątki działają seryjnie.Używanie łatek z gwintowaniem geent z gwintowaniem sprawia, że wątek działa seryjnie
Mój kod:
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'
Więc nić nie działa zgodnie z oczekiwaniami.
Ale jeśli usunę monkey.patch_all()
, to działa dobrze.
Problemem jest to, że muszę monkey.patch_all()
za korzystanie gevent (teraz pokazane w powyższym kodzie)
Moje rozwiązanie:
Zmieniłem
monkey.patch_all()
do
monkey.patch_all(thread=False)
więc nie łatam wątku.
mam edytowany moje pytanie. Nie mogę spać, ponieważ moja praca zajmuje kilka minut, – yossi
@yossi Jeśli masz zadanie, które zajmuje dużo czasu i nie można uzyskać kontroli w pewnym momencie, potrzebujesz prawdziwych wątków zamiast coroutines. W takim przypadku powiedziałbym, że lepiej nie łatać wątków. – jcollado
ok, co zrobiłem, to monkey.patch_all (thread = False) – yossi