我有一些代码可以使用多处理库的 pathos 扩展来执行一些操作。我的问题是如何使用更复杂的工作函数——在本例中名为New_PP
. 我应该如何格式化 thpool 行来处理我的工作函数需要的字典才能给我一个结果。access_dict
Python 将字典默认为全局变量,但在工作函数的范围内,我收到与找不到此字典 ( ) 相关的错误,所以我如何发送字典或确保它对我的工作线程可用。
Nchunks = 10
thpool = pathos.multiprocessing.ThreadingPool()
mppool = pathos.multiprocessing.ProcessingPool()
Lchunk = int(len(readinfiles) / Nchunks)
filechunks = chunks(readinfiles, 10)
for fnames in filechunks:
files = (open(name, 'r') for name in fnames)
res = thpool.map(mppool.map, [New_PP]*len(fnames), files)
print res[0][0]
和工人功能:
def New_PP(line):
split_line = line.rstrip()
if len(split_line) > 1:
access_dict[4] ....
工人函数如何到达access_dict
?
我还尝试将我的函数包装在一个类中,如下所示:
class MAPPP:
def New_PP(self, line):
self.mytype = access_dict
return my_type
def __init__(self, value_dict):
self.access_dict = access_dict
和:
mapp = MAPPP(value_dict)
print mapp.value_dict
res = thpool.map(mppool.map, [mapp.New_PP]*len(fnames), files)
但是我遇到了同样的问题。