1
私はこのようなプログラムを作成しています。関数内のグローバル辞書を更新するには
from __future__ import print_function
import multiprocessing
dict1 = dict((k,v) for (k,v) in zip(range(0,11),range(50,61)))
dict2={}
dict3={}
def fun1(dct):
#How can I process `dct` as `multiprocessing.Pool` would act like a loop sending chunks of iterable?
#I can do:
# for i in dct:
# dict2.update({dct[i]:i})
# but `multiprocessing.Pool` will do the looping part automatically. In this case what should be done to index `dct`?
#dict2.update({dct[i]:i})
return dict2
if __name__ == '__main__':
p=multiprocessing.Pool(2)
dict3=p.map(fun1,dict1)
p.close()
p.join()
print(dict3) #write in file
私は機能fun1
内でグローバル変数dict2
を変更し、(ファイルに書き込む)を印刷するために、main関数に更新されたグローバル変数を返すようにしたいです。しかし、それ以前は、エラーTypeError: 'int' object is unsubscriptable
が発生しています。これをどのように機能させることができますか?
私はキーワードglobal
を使用してグローバル変数を変更する方法についていくつかの質問を読んで、しかしfun1()
でglobal dict2
を配置する変数を毎回リセットされます。
更新:
がどのように私はmultiprocessing.Pool
としてdct[0]
ようdct
を処理することが可能で反復可能なのチャンクを送信するループのように行動するだろうか?
multiprocessing'私はコードが同じグローバル変数へのアクセスを持っているとは思いません。 – quamrana
'i'はどこにでも定義/初期化する必要はありません。 – tdube