【发布时间】:2017-08-18 17:59:33
【问题描述】:
我有这样的代码:
def generator():
while True:
# do slow calculation
yield x
我想将缓慢的计算转移到单独的进程中。
我正在使用 python 3.6,所以我有 concurrent.futures.ProcessPoolExecutor。如何使用它来并发化生成器并不明显。
与使用map 的常规并发场景的不同之处在于,这里没有要映射的内容(生成器永远运行),我们不希望一次获得所有结果,我们希望将它们排队等待直到在计算更多结果之前队列未满。
我不必使用concurrent,multiprocessing 也可以。这是一个类似的问题,不清楚如何在生成器中使用它。
轻微扭曲:生成器返回的每个值都是一个大型 numpy 数组(大约 10 兆字节)。我如何在没有酸洗和解酸的情况下转移它?我已经看过 multiprocessing.Array 的文档,但是如何使用它来传输一个 numpy 数组并不完全清楚。
【问题讨论】:
标签: python python-3.x parallel-processing generator concurrent.futures