スクリプトをスレッドの使用からはるかにクールなマルチプロセッシングに変換しようとしています(Python 3.2以降を使用していますconcurrent.futures
が、このコードはクラッシュします
with ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:
for result in executor.map(lambda h:
validate_hostname(h, pci_ids, options.verbose),
get_all_hostnames()):
エラーが発生します_pickle.PicklingError: Can't pickle <class 'function'>: attribute lookup builtins.function failed
。この回答を読んだとき、問題はラムダ関数をパラメーターとして持つことができないことでexecutor.map()
あり、そのためにexecutor.map()
は1パラメーター関数を開発する必要がありますが、それらpci_ids
はoptions.verbose
可変であるため、固定として指定することはできませんヘルプ関数の値。
何をすべきかアイデアはありますか?