我想使用多處理來生成馬爾可夫鏈的轉換矩陣。使用具有多個返回值和有序字典的多處理
功能generateKeys()
生成一個新的費率字典和一個字典,在轉換後,狀態空間中每個狀態都有新的密鑰。
from collections import OrderedDict
def generateKeys():
idxDict = OrderedDict()
rateDict = OrderedDict()
for key,state in stateDict.items():
newkeys,rates = transitionFunction(state)
idxDict[key] = newkeys
rateDict[key] = rates
return idxDict,rateDict
在這裏使用OrderedDict
的原因是,按鍵得到在下一步中夾雜了常規dict
(在接下來的步驟我在串聯的字典中numpy的陣列,並將它們存儲在稀疏coo_matrix)。
由於字典密鑰是唯一的,因此應該可以並行運行generateKeys()
並在多核計算機上更快地填寫這兩個字典。
我已經查看了multiprocessing
包和一些示例,但我看到的示例僅針對單個返回值,沒有有序的詞典。我真的不明白如何在我的環境中應用它。任何人都可以告訴我這是如何工作?
如果你需要保持以便'transitionFunction'要求,並行是不是要走的路.. 。 – Cyrbil
@Cyrbil嗯,你是對的。我已經看到了使用常規字典和按鍵排序的解決方法。 – Forzaa