关于gevent的运行时间难题

时间:2012-10-26 04:32:29

标签: gevent

有人可以帮我解决令人费解的行为吗?这是我的代码:
https://gist.github.com/3956734

我想知道如何使用gevent.pool。我一次产生一个greenlet,greelet什么都不做,但睡了10秒。它应该只运行10秒,但在现实情况下运行20秒。

我的代码出了什么问题?我已经阅读了gevent的文档,但仍然不知道。

1 个答案:

答案 0 :(得分:1)

根据您的代码中的评论:

#ids_set = {'945453','1909279'}

根据你的问题,你的小孩什么都不做,只能睡10秒钟。

假设这两件事都是真的那么你的代码......

 while ids_set is not None:
    id = ids_set.pop()
    print 'now id is', id
    pool.spawn(download_content_test,int(id))
    pool.join()

...应该运行20秒,因为你在每个产生后加入游泳池。所以你的代码是这样做的:spawn,join(10秒等待),spawn,join(10秒等待)。

我认为你打算做的是在while循环之外有pool.join()。然后它只会等待10秒钟。