gpt4 book ai didi

python - 如何有效地迭代多个生成器?

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:16 24 4
gpt4 key购买 nike

我有三个不同的生成器,它们从网络生成数据。因此,每次迭代可能需要一段时间才能完成。

我想混合对生成器的调用,并考虑了循环法(找到 here )。问题是每次调用都被阻塞,直到它完成。

有没有办法同时循环遍历所有生成器而不阻塞?

最佳答案

您可以使用我的 ThreadPool 上的 iter() 方法来完成此操作类。

pool.iter() 产生线程函数返回值,直到所有被修饰+调用的函数完成执行。装饰所有异步函数,调用它们,然后循环遍历 pool.iter() 以在值发生时捕获它们。

例子:

import time
from threadpool import ThreadPool
pool = ThreadPool(max_threads=25, catch_returns=True)

# decorate any functions you need to aggregate
# if you're pulling a function from an outside source
# you can still say 'func = pool(func)' or 'pool(func)()
@pool
def data(ID, start):
for i in xrange(start, start+4):
yield ID, i
time.sleep(1)

# each of these calls will spawn a thread and return immediately
# make sure you do either pool.finish() or pool.iter()
# otherwise your program will exit before the threads finish
data("generator 1", 5)
data("generator 2", 10)
data("generator 3", 64)

for value in pool.iter():
# this will print the generators' return values as they yield
print value

关于python - 如何有效地迭代多个生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com