我正在尝试学习python中的多重处理,但是在其早期步骤中不起作用。例如下面的代码:
counter = 2
def train_func():
counter1 = counter*2
p1 = mp.Process(target=train_func)
p2 = mp.Process(target=train_func)
p1.start()
p2.start()
p1.join()
p2.join()
print(counter1)
结果是没有定义NameError:名称'counter1'。似乎它没有进入功能。这怎么了?
如果必须使用一些简单的功能,最简单的方法是使用池。您的代码看起来像:
from multiprocessing import Pool
def f(x):
return x*x
results = []
def saveres(res):
results.append(res)
pool = Pool(nJobs)
print pool.map(f, range(10))
for i in range(10):
pool.apply_async(f, (i,), callback=saveres)