Why is python gevent slower than serial?

I use gevent to preload at the same time.
based on this example this is code:

import gevent from gevent import monkey urls = ['https://www.djangoproject.com/','http://www.nytimes.com/','http://www.microsoft.com'] monkey.patch_all() import urllib2 from datetime import datetime def print_head(url): print ('Starting %s' % url) data = urllib2.urlopen(url).read() print ('%s: %s bytes: %r' % (url, len(data), data[:50])) startTime = datetime.now() jobs = [gevent.spawn(print_head, url) for url in urls] gevent.joinall(jobs) totalTime = datetime.now() - startTime print "Total time: %s" % totalTime 

my problem is that the above code takes much longer than the serial version and in most cases it turns off. here is the serial version, which is much faster:

 import urllib2 from datetime import datetime urls = ['https://www.djangoproject.com/','http://www.nytimes.com/','http://www.microsoft.com'] def print_head(url): print ('Starting %s' % url) data = urllib2.urlopen(url).read() print ('%s: %s bytes: %r' % (url, len(data), data[:50])) startTime = datetime.now() for url in urls: try: print_head(url) except: print 'ops EXCEPTION :(' totalTime = datetime.now() - startTime print "Total time: %s" % totalTime 
+4
source share
1 answer

OK
the problem was an old gevent package.
I just deleted the old one and installed a new one from here , as @reclosedev pointed out.
and now it works fine.

+1
source

Source: https://habr.com/ru/post/1394857/


All Articles