La mia comprensione è che una volta chiamato gevent.monkey.patch_all(), il modulo di threading standard viene modificato per utilizzare i greenlet anziché i thread python. Quindi se scrivo la mia applicazione in termini di thread, lock, semafori, ecc. E poi chiami patch_all, sto ottenendo il massimo beneficio da gevent, o sto perdendo qualcosa rispetto all'utilizzo degli equivalenti espliciti di gevent?Lato negativo dell'uso di threading con patch rispetto a gevent greenlet nativi?
La motivazione alla base di questa domanda è che sto scrivendo un modulo che utilizza alcuni thread/greenlet e sto decidendo se è utile avere un passaggio esplicito tra l'utilizzo di gevent e l'utilizzo del threading o se posso semplicemente utilizzare il threading + patch_all senza perdere nulla.
Per mettere in codice, è questo ...
def myfunction():
print 'ohai'
Greenlet.spawn(myfunction)
... diverso a questo?
import gevent.monkey
gevent.monkey.patch_all()
def mythread(threading.Thread):
def run(self):
print 'ohai'
mythread().start()