我目前正在如何解決Python 3.5+中的這個問題。此多處理,多線程或asyncio
我的代碼看起來像這樣:
while True:
do_process1() # run this synchronously
do_process2() # don't wait on this to go to the next iteration but need to handle its completion
而且在這種情況下,do_process2()
需要很長的時間。我想要do_process2()
異步運行,以便循環的下一次迭代不會等待do_process2()
完成。
從我正在閱讀,我可以使用多線程,但與GIL我看不到我如何「卸載」do_process2()
並繼續執行下一個迭代。
看來多處理在這裏很合適。說到這裏,我看到的很多例子都是在上等待的子流程來完成工作。我不想這樣做,我想繼續執行while
循環。
同樣,我希望能夠處理從異步調用到do_process2()
的回調,以便我可以處理該操作的完成。我發現我可以通過Pool
對象來達到apply_async()
,但這是最好的方法嗎?
這裏最好的辦法是什麼?我正在使用Python 3.5+,所以想知道asyncio適合哪裏?我覺得像多線程,我不會有我正在尋找卸載和繼續工作的收穫。
感謝您的信息!那麼'asyncio'迎合Python的多線程部分嗎?這只是另一種方式嗎? – user7327326