J'ai deux versions de code qui suivent l'utilisation d'eventlet. L'attente est que les 2 appels spawn_n s'exécuteront simultanément, mais ce n'est pas le cas. L'exécution se passe en série.Le spawn Python Eventlet ne s'exécute pas simultanément
import eventlet
import threading
import datetime
from eventlet.green import urllib2
def hello(name):
print eventlet.greenthread.getcurrent(), threading.current_thread()
print datetime.datetime.now()
print " %s hello !!" % name
urllib2.urlopen("http://www.google.com/intl/en_ALL/images/logo.gif").read()
eventlet.spawn(hello, 'abc')
eventlet.spawn(hello, 'xyz')
eventlet.sleep(0)
O/P: < _MainThread (MainThread, a commencé 140365670881088)>
09/08/2016 14: 04: 57,782866
abc bonjour !!
< _MainThread (MainThread, a commencé 140365670881088)>
09/08/2016 14: 05: 02,929903
xyz bonjour !!
import eventlet
import threading
import datetime
from eventlet.green import urllib2
def hello(name):
print eventlet.greenthread.getcurrent(), threading.current_thread()
print datetime.datetime.now()
print " %s hello !!" % name
urllib2.urlopen("http://www.google.com/intl/en_ALL/images/logo.gif").read()
pool = eventlet.GreenPool(size=4)
pool.spawn_n(hello, 'pqr')
pool.spawn_n(hello, 'lmn')
pool.waitall()
O/P: < _MainThread (MainThread, a commencé 139897149990720)>
09/08/2016 14: 05: 25,613546
bonjour !! pqr
< _MainThread (MainThread, a commencé 139897149990720)>
09/08/2016 14: 05: 30,699473
LMN bonjour !!
Dans les deux versions du code, l'appel se produit de manière séquentielle.
Après avoir ajouté un autre eventlet.spawn_n (bonjour, 'def') ou poll.spawn_n (bonjour, 'premier'). Les 2 derniers appels arrivent avec une différence de quelques millisecondes. A partir de la documentation, les eventlets ne sont pas des concurrents purs. Y a-t-il de toute façon une exécution simultanée réelle avec très peu de modifications? – nebi
Définir 'concurrly' et en quoi est-il différent de' séquentiellement'. – temoto