【发布时间】:2025-12-17 10:10:01
【问题描述】:
更新:这里有一个更具体的例子
假设我想从一组相当大的文件中编译一些统计数据:
我可以制作一个生成器(line for line in fileinput.input(files)) 和一些处理器:
from collections import defaultdict
scores = defaultdict(int)
def process(line):
if 'Result' in line:
res = line.split('\"')[1].split('-')[0]
scores[res] += 1
问题是当一个人到达multiprocessing.Pool 时如何处理这个问题。
当然可以定义multiprocessing.sharedctypes 和自定义struct 而不是defaultdict,但这似乎相当痛苦。另一方面,我想不出在进程之前实例化某些东西或在生成器用完主线程后返回某些东西的pythonic方法。
【问题讨论】:
-
也许其他人明白你的问题是什么......但我想我不明白。你能进一步澄清吗?
-
你了解
else子句在 for 循环中的作用吗? -
您要解决什么问题?您想知道每个项目何时完成吗?当他们全部完成?还有什么?
-
第一段代码在做什么?通常
else在for子句之后表示一个结构,表示“如果循环没有遇到break 语句,则执行此操作”,但只有process(i)我不确定你期望else做什么在这里做。 -
让我把问题说得更具体一些,对不起各位
标签: python multiprocessing generator