我有这段代码......
import gevent
from gevent.pool import Pool
import datetime as dt
td = dt.datetime.today # alias for convenience only
p = Pool(5)
def f(i):
gevent.sleep(i)
print 'Done %s' %i
return i
jobs = [p.spawn(f, 5), p.spawn(f, 6), p.spawn(f, 7)]
tic = td()
gevent.joinall(jobs)
toc = td()
print (toc - tic)
# or alternatively in ipython
jobs = [gevent.spawn(f, 5), gevent.spawn(f, 6), gevent.spawn(f, 7)]
%time gevent.joinall(jobs)
为什么这只需要5秒钟,所有3个功能一次恢复?我希望它总共阻挡7秒,但是在5,6和7秒打印。
我使用的是2.7GHz Intel i5,Mac OS X Version 10.7.5,ipython 0.13.1,Python 2.7.2,gevent 0.13.8。
编辑:自从我再次尝试以来,原始代码对我有用。我添加了一些Pool的东西,这似乎是问题所在。然后我在与我的“问题”终端不同的终端尝试了它,它再次正常工作!现在我只是感到困惑,似乎一个特定的终端不对。
Edit2:我在创建一个新池后重新运行了代码,它再次正常工作!换句话说,我再也无法重现这一点。抱歉,浪费时间,伙计们。