<p>这是我正在处理的更复杂代码的一个非常简单的版本。问题是,我想将method()函数中计算的项附加到某个列表中,以便以后显示。但是,运行此代码时,list对象为空,而results数组已满。在</p>
<pre><code> import multiprocessing as mp
global list
list = []
def add(thing):
list.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(thing)
def method():
global list
add(8) #doesn't work as wanted
return 7
def logResult(result):
results.append(result)
if (__name__ == '__main__'):
results = []
cpu = mp.cpu_count()
pool = mp.Pool(processes=cpu)
for x in range(0, 2000):
pool.apply_async(method,callback=logResult)
pool.close()
pool.join()
print list
print results
</code></pre>
<p>输出:</p>
^{pr2}$
<p>我知道add方法似乎是多余的,但是一个简单的列表.追加method()函数中的()也不起作用。add方法用于镜像logResult方法()。我能理解为什么它不起作用,但我不知道怎么解决这个问题。如果没有并行化,程序可以正常工作,但是我的项目需要并行化,因为计算比method()函数要复杂得多。期望的输出是</p>
<pre><code> [8,8,8,8,8,8,8,8,8,8,8,8,...]
[7,7,7,7,7,7,7,7,7,7,7,7,...] and so on.
</code></pre>
<p>提前谢谢。在</p>