0

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

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

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

4

1 回答 1

1

根据您代码中的注释:

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

根据你的问题,你的greenlets除了睡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 秒等待)。

我认为你的意思是pool.join()在while循环之外。然后它只会等待10秒。

于 2012-11-02T03:25:01.027 回答