看起来您受I / O约束:
在计算机科学中,I /
O绑定是指一种条件,其中完成计算所需的时间主要由等待输入/输出 *** 作完成所花费的时间来确定。这与受CPU约束的任务相反。当请求数据的速率比消耗数据的速率慢,或者换句话说,请求数据花费的时间多于处理数据的时间时,就会出现这种情况。
您可能需要让主线程进行读取,并在子进程可用时将数据添加到池中。这与使用有所不同
map。
当您一次处理一行并且输入被拆分时,您可以fileinput
用来遍历多个文件的行,并映射到函数处理行而不是文件:
一次传递一行可能太慢,因此我们可以要求map传递块,并可以进行调整,直到找到最佳点为止。我们的函数解析了几行:
def _parse_coreset_points(lines): return Points([_parse_coreset_point(line) for line in lines])def _parse_coreset_point(line): s = line.split() x, y = [int(v) for v in s] return CoresetPoint(x, y)
而我们的主要功能是:
import fileinputdef getParsedFiles(directory): pool = Pool(2) txts = [filename for filename in os.listdir(directory): if filename.endswith(".txt")] return pool.imap(_parse_coreset_points, fileinput.input(txts), chunksize=100)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)