3
我必須並行化一個涉及某個「產量」的函數。這只是我必須處理的整個程序的一個簡單複製品,但總結了我所面臨的問題。在這裏,我嘗試瞭解我的項目的多處理,apply_async和yield 在這個例子中,我使用了一個multiprocessing.pool,並使用了apply_async來並行化。我在「並行」函數中添加了一些打印語句,但它們沒有打印出來。 當我用return來替換yield時,print語句得到了體現。我不確定收益的性質。我知道它是一臺發電機,只能在返回後使用一次。請告知如何使這項工作。Python:多處理產量池
import multiprocessing as mp
results=[]
def parallel(x, y, z):
print "aim in parallel"
count=0
result=[]
for line in range(10000):
count+=1
result.append(count)
p=x**3+y+z
print " result"
print result
print p
if p > 0:
return result
# yield result, p
# count += 1
# yield p, result
# count += 1
def collect_results(result):
print "aim in callback"
results.append(result)
#print results
def apply_async_with_callback():
pool = mp.Pool(processes=10)
r = range(10)
[pool.apply_async(parallel, args=(2,5, 7),callback=collect_results) for i in r ]
pool.close()
pool.join()
print "length"
print len(results)
print results
if __name__ == "__main__":
apply_async_with_callback()