我正在尝试在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)
结果是未定义名称错误:名称"计数器 1"。似乎它没有进入功能。这有什么问题?
如果你必须使用一些简单的函数,最简单的方法是使用池。您的代码将如下所示:
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)