有人可以帮我解决令人费解的行为吗?这是我的代码:
https://gist.github.com/3956734
我想知道如何使用gevent.pool
。我一次产生一个greenlet,greelet什么都不做,但睡了10秒。它应该只运行10秒,但在现实情况下运行20秒。
我的代码出了什么问题?我已经阅读了gevent的文档,但仍然不知道。
答案 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秒钟。