私のコードをデバッグするために一晩かかるので、私はついにこのトリッキーな問題を発見した。以下のコードを見てください。どのようにコールバック関数は、Pythonのマルチプロセッシングで動作するmap_async
from multiprocessing import Pool
def myfunc(x):
return [i for i in range(x)]
pool=Pool()
A=[]
r = pool.map_async(myfunc, (1,2), callback=A.extend)
r.wait()
私はA=[0,0,1]
になるだろうと思ったが、出力はA=[[0],[0,1]]
です。私にA=[]
がある場合、A.extend([0])
とA.extend([0,1])
は私にA=[0,0,1]
を与えるので、これは私に意味をなさない。おそらくコールバックは異なる方法で動作します。だから私の質問は[[0],[0,1]]
の代わりにA=[0,0,1]
を得る方法ですか?ご意見ありがとうございます。
使用しているオペレーティングシステムとPythonのバージョンは何ですか? –