我目前正在如何解决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