我有一個簡單的Python腳本,它使用了兩個更復雜的Python腳本,並對結果進行了一些操作。非常簡單的Python併發編程
我有兩個模塊,Foo和酒吧,和我的代碼是這樣的:
import Foo
import Bar
output = []
a = Foo.get_something()
b = Bar.get_something_else()
output.append(a)
output.append(b)
這兩種方法都需要很長的時間來運行,也不依賴於其他的,所以顯而易見的解決方案是並行運行它們。我該如何做到這一點,但要確保訂單得到保持:無論哪個人先完成,必須等待另一個人完成,然後才能繼續執行。
讓我知道如果我沒有讓自己清楚,我試圖讓示例代碼儘可能簡單。
編輯:
感謝琥珀色,您的解決方案可與一個細微的變化。
而是在創建時調用每個線程的start(),我將它們像這樣:
threadname = threading.Thread(target=foo)
threadname.start()
如果沒有這個,我得到的錯誤AttributeError: 'NoneType' object has no attribute 'join'
和一些非常怪異的行爲與併發。如果你在下面編輯你的答案,我會將其標記爲已解決。
線程有助於空閒代碼。如果它有很多繁重的計算,你應該建議多處理,因爲在這種情況下,線程只會增加延遲。 – akaRem
@akaRem當然,我可以在關於這個的一個筆記編輯。 – Amber
是的,它是非常密集的CPU。然而,我會首先得到這個工作。我有一個快速的樣子,API是相同的。 – Rory