背景線程或Multiprocessing如何與遞歸一起工作?
我有點新開發,並有一個一般的Python /編程問題。如果您有一種遞歸方法,那麼啓用多線程或多處理的內容是什麼?我已經做了一些簡單的閱讀和一些例子,但他們似乎應用新代碼的語法(而不是非常密集的cpu任務),我更想知道如何重新設計現有代碼來做到這一點?
說我有什麼那是CPU密集型(基本保持增加了自己,直到極限命中):
def adderExample(sum, number):
if sum > 1000:
print 'sum is larger than 10. Stoping'
else:
sum = sum + number
print sum
number = number + 1
adderExample(sum, number)
adderExample(0,0)
問題(S)/雖然過程
我將如何處理這使它運行得更快,假設我有多個內核可用(我希望它最終希望它跨越機器,但我認爲這是hadoop的一個特殊問題,所以我會保持這個例子只有一個系統與多個CPU)?看起來線程化並不是最好的選擇(因爲產生新線程需要花費時間),如果這是真的,我應該只關注多處理?如果是這樣,可以將遞歸分割爲不同的cpu(我假設的排隊,然後在完成後重新加入)?我可以爲每個進程創建多個線程,而不是通過多個cpu分割這些進程?最後,遞歸深度是否限制了整體限制,還是基於線程/過程,如果多處理/線程解決了這個限制呢?
另一個問題(相關)如何通過暴力試圖編碼(rsa,無線密鑰等)代碼克服了這個問題?我假設他們以某種方式在多個cpu上調整他們的數學過程。這個或任何建立我理解的例子都很棒。
任何提示/建議將是偉大的
謝謝!
一般來說,進程需要更多的時間和開銷產生比線程。線程使用與啓動程序相同的內存空間。進程必須創建新的內存開銷。使用線程技術,您還可以輕鬆地併入信息結構的共享而不需要複製信息結構,但是如果不使用基於OS(或其他)的「共享內存」IPC實現,就無法輕鬆地通過多個進程來實現這一點。 – g19fanatic