【发布时间】:2026-02-10 20:40:01
【问题描述】:
我有一个大型生成器列表,如下所示:
test_list = [(i for i in range(100000000)) for x in range(100)]
这比我的要大得多,但说明了生成器的原因。
我想独立评估每个生成器上的函数:
def test_function(generator):
results = []
for i in range(3):
results.append(next(generator))
return results
对于这样的函数,在应用函数之前不要将整个生成器评估为列表是有意义的。
我想并行运行它:
import multiprocessing as mp
output = mp.Queue()
processes = [mp.Process(target=test_function, args=(generator, )) for generator in test_list]
# Run processes
for p in processes:
p.start()
# Exit the completed processes
for p in processes:
p.join()
# Get process results from the output queue
results = [output.get() for p in processes]
但是,我收到一个错误,即无法腌制生成器。
有什么方法可以并行运行这个过程?
谢谢, 杰克
【问题讨论】:
标签: python parallel-processing multiprocessing python-multiprocessing