Fra*_*til 5 python io multithreading nonblocking blocking
我有一个Python应用程序,简而言之,从远程服务器接收数据,处理它,响应服务器,偶尔将处理后的数据保存到磁盘.我遇到的问题是要写入大量数据,并且保存过程可能需要超过半分钟.这显然是一种阻塞操作,因此在此期间网络IO会停止.我希望能够在后台进行保存操作,可以这么说,以便应用程序可以合理地快速地继续与服务器通信.
我知道,我也许需要某种线程模块来实现这一点,但我不能告诉区别是什么之间thread,threading,multiprocessing和各种其他选项.有人知道我在找什么吗?
由于您受I/O限制,因此请使用该threading模块.  
你应该几乎不需要使用thread它,它是一个低级接口; 该threading模块是一个高级接口包装器thread.
该multiprocessing模块与线程模块不同,multiprocessing使用多个子进程来执行任务; multiprocessing恰好使用相同的界面threading来减少学习曲线.multiprocessing通常在使用CPU绑定计算时使用,并且需要避免多核CPU中的GIL(全局解释器锁定).
多线程的一种更为深奥的替代方法是使用asyncore模块的异步I/O. 另一个选项包括Stackless Python和Twisted.
| 归档时间: | 
 | 
| 查看次数: | 1051 次 | 
| 最近记录: |