为什么这个gevent睡眠只需要5秒钟?

时间:2013-09-15 02:43:47

标签: python gevent

我有这段代码......

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:我在创建一个新池后重新运行了代码,它再次正常工作!换句话说,我再也无法重现这一点。抱歉,浪费时间,伙计们。

0 个答案:

没有答案