我使用python 2.7,我有一些代碼,看起來像這樣:執行任務蟒蛇
task1()
task2()
task3()
dependent1()
task4()
task5()
task6()
dependent2()
dependent3()
的唯一依賴性這裏如下:dependent1需要等待tasks1-3,dependent2需求等待任務4-6和依賴3需要等待依賴者1-2 ......以下內容可以:先並行運行整個6個任務,然後並行地運行前兩個依賴者..然後最終依賴
我更喜歡儘可能多的任務並行運行,我爲一些模塊搜索了一些內容,但我希望避免使用外部庫,並且不確定Que ue-Thread技術可以解決我的問題(也許有人可以推薦一個好的資源?)
我推薦使用標準庫的* Queue.task_done *和* Queue.join *方法來同步這些線程。在隊列文檔的頁面底部,您會找到一個如何等待其他線程完成其任務的示例:http://docs.python.org/library/queue.html#Queue.Queue.join –
如果你的代碼變得更加複雜,那麼值得看看外部庫,因爲已經有事情需要處理並行運行任務,同時確保依賴性按順序運行。 –
由於GIL,線程將只在標準python中一次運行一個線程。使用STM的Pypy的未來版本可能會得到這個。 –