我對多處理和地圖功能有一些誤解。多處理:如何在列表中使用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)
???
- 我不明白怎麼我的parse()
從for row in INPUT_MAGIC_DATA_STRUCTURE
作爲第一個參數傳遞給pool.map()
和轉讓其所有參數 - api_client1,api_client2。
你能幫我嗎?
在此先感謝。
UPD:
我已經做了:
pool = Pool(10)
pool.map(parse(magic_parser, magic_staff), INPUT_MAGIC_DATA_STRUCTURE)
無論如何,當解釋涉及到它停止第二線,使只有一個parse()方法的一個實例(我見記錄分析行的輸出:1,2,3,4,5 - 逐個記錄)。
所以,你會有很多進程在列表上運行,修改它? –
@TimGivois假設這些進程只會追加到列表中。這不可能? – vladiqtx
如果您只追加到列表中,因爲'append'是線程安全的,這意味着您可以讓x個進程併發地運行,同時修改列表而不會產生任何問題:http://stackoverflow.com/questions/ 5442910/Python的多處理池地圖換多參數 –