【发布时间】:2017-02-12 18:31:00
【问题描述】:
我正面临一个来自大型 csv 文件的并行计算数据问题。问题是不能并行读取文件,但可以传递来自文件的数据块以进行并行计算。我尝试使用 Multiprocessing.Pool 没有结果(Pool.imap 不接受产量生成器)。
我有一个从文件中读取数据块的生成器。它需要大约。 3 秒。从文件中获取一大块数据。这块数据被处理了大约需要 ca。 2 秒。我从文件中获得 50 块数据。等待下一个文件块我可以计算前一个块“并行”。
让我们有一些概念上的代码(但在实践中不起作用)。:
def file_data_generator(path):
# file reading chunk by chunk
yield datachunk
def compute(datachunk):
# some heavy computation 2.sec
return partial_result
from multiprocessing import Pool
p = Pool()
result = p.imap(compute, file_data_generator(path) ) # yield is the issue?
我做错了什么?我应该使用其他任何工具吗? 是 Python3.5
简单的代码概念/骨架赞赏:)
【问题讨论】:
标签: python-3.x parallel-processing multiprocessing