私はマルチプロセッシングとマップ機能にいくつかの誤解があります。マルチプロセッシング:引数にリストと関数のpool.mapを使用するには?
私は簡単に説明しようとするでしょう:
まず、私は、例えば、リストを持っている:
:INPUT_MAGIC_DATA_STRUCTURE = [
['https://github.com', 'Owner', 'Repo', '', '', '0', '0'],
['https://github.com', 'Owner', 'Repo', '', '', '0', '0'],
['https://github.com', 'Owner', 'Repo', '', '', '0', '0'],
['https://github.com', 'Owner', 'Repo', '', '', '0', '0'],
['https://github.com', 'Owner', 'Repo', '', '', '0', '0'],
['https://github.com', 'Owner', 'Repo', '', '', '0', '0'],
]
また、私は現在、特定の内部ロジックを使用して、このリストを解析する方法を、持っています
最後に、for
ではなく、非同期にするいくつかの変形があります。
from multiprocessing import Pool
pool = Pool(10)
pool.map(<???>, INPUT_MAGIC_STRUCTURE)
???
- api_client1、api_client2 - 私はpool.map()
への最初の引数としてfor row in INPUT_MAGIC_DATA_STRUCTURE
から私のparse()
を転送し、そのすべての引数を転送する方法を理解することはできません。
お手伝いできますか?
ありがとうございます。
UPD:
私はすでに作った:インタプリタが止まる二行目に来るとparse()メソッドのインスタンスを1つだけ作るとき
pool = Pool(10)
pool.map(parse(magic_parser, magic_staff), INPUT_MAGIC_DATA_STRUCTURE)
とにかく、(私が見ます解析された行の出力を記録する:1、2、3、4、5 - 1つずつ)。
だから、あなたはそれを修正し、リスト上で実行されている多くのプロセスがあるでしょうか? –
@ TimGivoisこれらのプロセスがリストにのみ追加されるとします。それは不可能? – vladiqtx
'appends'はスレッドセーフなので、リストに追加するだけであれば、xプロセスを同時に実行しても問題なくリストを変更できます。http://stackoverflow.com/questions/ 5442910/python-multiprocessing-pool-map-for-multiple-arguments –