почему Python Gevent медленнее, чем последовательный? - PullRequest
4 голосов
/ 05 февраля 2012

Я использую gevent для одновременной загрузки преформ.
на основе это пример это код:

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

Моя проблема в том, что приведенный выше код занимает намного больше времени, чем серийная версия, и в большинстве случаев он истекает. вот серийная версия, которая намного быстрее:

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

1 Ответ

1 голос
/ 05 февраля 2012

ок
проблема была в старом пакете gevent.
я просто удалил старый и установил новый из здесь , как указал @reclosedev.
и теперьработает нормально.

...