這是我的代碼sniplet多個參數:Python的 - 我如何可以通過使用泳池地圖
data = [currentAccount.login,currentAccount.password,campaign.titlesFile,campaign.licLocFile,campaign.subCity,campaign.bodiesMainFile,campaign.bodiesKeywordsFile,campaign.bodiesIntroFile]
results = multiprocessing.Pool(5).map(partial(self.postAd,data),range(3))
...
def postAd (self,login,password,titlesFile,licLocFile,subCity,bodiesMainFile,bodiesKeywordsFile,bodiesIntroFile):
...
(只要你知道這是怎麼回事:這些類中currentAccount和運動是類,這些都是變數使用self b/c這是所有運行在一個類中我試圖運行self.postAd 3x通過它所有我有數據的變量)
當我運行它說「postAd()失蹤6個需要的位置參數:'titlesFile','licLocFile','subCity','bodiesMainFile','bodiesKeywordsFile'和'bodiesIntroFile'「
我做錯了什麼?爲什麼它只接受2個變量?
如果我不能使用游泳池地圖,我應該怎麼做?
我還沒有成功嘗試這樣做:
results = multiprocessing.Pool(5).map(lambda args: self.postAd(currentAccount.login,currentAccount.password,campaign.titlesFile,campaign.licLocFile,campaign.subCity,campaign.bodiesMainFile,campaign.bodiesKeywordsFile,campaign.bodiesIntroFile), range(3))
Error: Can't pickle <function NewPostService.processNewAds.<locals>.<lambda> at 0x0000000002F3CBF8>: attribute lookup <lambda> on functions failed
我還試圖與沒有成功: 結果= multiprocessing.Pool(5).MAP(拉姆達ARGS:self.postAd(currentAccount.login,currentAccount.password,campaign.titlesFile,campaign.licLocFile,campaign.subCity ,campaign.bodiesMainFile,campaign.bodiesKeywordsFile,campaign.bodiesIntroFile),range(3)) 錯誤:Can not pickle。 at 0x0000000002F3CBF8>:屬性查找函數失敗 –
您真的希望所有三個調用都使用*完全相同的參數嗎?我不確定這是否適用於map,因爲它總是希望從它循環的序列(在這種情況下爲'range')提供額外的參數。你可以通過編寫一個額外的函數來忽略它的最後一個參數(並且使用'partial(self.postadd,* data)'),但是使用你自己的創建'Process'es的循環可能更容易。 – Blckknght
是的我希望它使用相同的參數。我想同時發生3x的過程是原因。 我該怎麼做「,但使用自己的循環創建進程可能會更容易。」你可以給我一個基於我的代碼的例子,如果你是如此友善 –