Python多线程具体应用的方法
本篇内容介绍了“Python多线程具体应用的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
为了利用多核处理器,看过很多文档,研究很多python相关技术,全部是失望的。
Python:受限于GIL,被锁住只能用一个CPU核心。
Twisted:其实只有一个线程,何谈多核的利用。
Stackless:测试表明其多线程程序的速度比Python多线程使用的native线程方式要快一点,不过一样没法用多核。
parallel Python:多进程方式,感觉封装的很龌龊,虽然翻译完了文档,但是仍然没有兴趣去使用。
现在的办法:
负载均衡:后面在多台服务器上启动多个Python程序。现在我开发的应用基本上都是用twistd启动的daemon程序。
C/S应用:各个进程间用多进程通信。
subprocess:使用这个模块,利用外部进程作worker,异步等待结果。
从这些解决方法之后,倒是感觉Python作为胶水语言其实多核利用也不是很必要。
pyprocessing 测试过没?这个模块将会被加入到python2.6中。
我用pyprocessing改造了Karrigell,性能获得了很大提升。
在Quixote官方白皮书中已经详细描述了Quixote的工作模式。Quixote可以使用Python自代的http_server(主要用于开发调试)和与Apache(或lighttpd)配合使用。
Quixote与Apache配合使用方式如下:
使用CGI,文档中称为egular CGI。被认为效率***的一种方式,因为每一个请求都会创建一个新的进程。
使用fastCGI,CGI可以运行fastCGI一定是可以应用的。这也是豆瓣采用的方式。在Quixote作者的一个PPT中,他认为fastCGI是buggy的。哦:(也不至于啊。我们正在寻找使用fastCGI的部署经验。
使用mod_python,将python代码嵌入到Apache中。
使 用SCGI,这是作者推荐的。使用Apache SCGI module scgi_mod将遵循SCGI协议Apache将请求发送到相应的Socket如localhost:3001。而这个Socket由本地运行的一个 Python程序打开。这个Python多线程将处理请求,并返回结果。
“Python多线程具体应用的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341