0
我想創建一個腳本,它從一個單獨的模塊調用一個函數來執行並行處理。多處理:在導入的函數中使用池
我的「頂級」腳本是這樣的:
from hydrology import model, descriptors
if __name__ == "__main__":
datafile = r"C:\folder\datafile.shp"
myModel = model.Model(data = datafile)
res = descriptors.watershed_pll(myModel)
的descriptors
模塊如下所示:
from multiprocessing import Pool
from arcfunc import multi_watershed
def watershed_pll(model):
pool = Pool()
for key, val in model.stations.iteritems():
res = pool.apply_async(multi_watershed(val, key))
pool.close()
pool.join()
return res
正如你所看到的,並行運行的功能從進口模塊arcfunc
, 執行並行化的功能位於模塊descriptors
內部,並且運行所有內容的腳本再次分離。
有沒有例外,當我跑,但我有兩個問題:
- res.successful()返回false
- 它運行快沒有比沒有多處理。
我懷疑我的架構是複雜的事情,但是,重要的是並行化功能是在一個單獨的模塊。
有什麼建議嗎?
咄!謝謝。那麼,它的工作,但我仍然有問題,它不會更快。這可能與外部庫的使用有關:arcpy .... – jramm
@jramm,對不起,但我不知道arcpy。 – falsetru