私は、Pool.map()でワーカー関数にキーワード引数を渡したいと思います。私はフォーラムを検索するときにこれの明確な例を見つけることができません。multiprocessing.pool.mapでkwargsを渡します。
コード例:
import multiprocessing as mp
def worker((x,y), **kwargs):
kwarg_test = kwargs.get('kwarg_test', False)
print("kwarg_test = {}".format(kwarg_test))
if kwarg_test:
print("Success")
return x*y
def wrapper_process(**kwargs):
jobs = []
pool=mp.Pool(4)
for i, n in enumerate(range(4)):
jobs.append((n,i))
pool.map(worker, jobs) #works
pool.map(worker, jobs, kwargs) #how to do this?
def main(**kwargs):
worker((1,2),kwarg_test=True) #accepts kwargs
wrapper_process(kwarg_test=True)
if __name__ == "__main__":
main()
出力:
型エラーがmultiprocessing.Poolまたはキューの内部で解析引数に関係している、と私は作るような、いくつかの他の構文を試してみましたkwargsのリスト。 [kwargs、kwargs、kwargs、kwargs]だけでなく、ジョブリストにkwargを含めるいくつかの試みが運がない。私はmapからmap_asyncへのmultiprocessing.poolのコードをトレースし、ジェネレータ構造に遭遇したときに task_batches = Pool._get_tasks(func, iterable, chunksize)
までpool.pyに到達しました。私は将来これについてもっと学ぶことができてうれしいですが、今のところ私はただ見つけようとしています:
kwargsとpool.mapの受け渡しを許可する簡単な構文はありますか?