今天12306的数据库爆出来了,午饭过后,自己搞了个针对12306密码查询的小api,结果影响有些大,VPS都挂了好几次 !  搞得哥们很是销魂呀 !  后来又听说,搞不好进去,尼玛    吓尿了 ! 

老规矩,标记下这篇文章的原文地址, http://xiaorui.cc

正题,下午看了国外的帖子,关于pipe和queue的实现,尤其是性能的对比啥的,有些感受 !  半夜了,睡不着觉,撸管又没好片,那就写点心得吧 ! 

老外帖子的地址是,http://stackoverflow.com/questions/8463008/python-multiprocessing-pipe-vs-queue 

关于,Pipe() 只能是两个客户端

关于,Queue() 可以有多个生产者和消费者

那么我们如何的选择他们?

如果你的环境,是多生产者和消费者,那么你只能是选择queue队列

如果两个进程间处理的逻辑简单,但是就是要求绝对的速度,那么pipe是个好选择 !

首先说明下pipe管道的场景,他的两个点的场景有些少,但是他的性能是觉得高 ! 反而在1000000级别的时候,支持多点的queue的性能就下去了,如果单纯的看性能,pipe要完爆queue。  当然,换个场景的话,pipe直接玩不转。 


另外,线程中常用的queue.queue() 和 multiprocessing 的queue的区别是很大的:


multiprocessing queues exchange data by pickling (serializing) objects and sending them through pipes.


Queue.Queue uses a data structure that is shared between threads and locks/mutexes for correct behaviour.



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

使用multiprocessing pool的某参数实现资源回收

饭饱之后,继续研究multiprocessing的设计实现。建议大家抽时间都看下常用的库的源码,常常会有意外的收获。  比如我这边发现multiprocessing P...

阅读全文

python下multiprocessing和gevent的组合使用

对于有些人来说Gevent和multiprocessing组合在一起使用算是个又高大上又奇葩的工作模式.   Python的多线程受制于GIL全局锁的特性,Gevent身为协...

阅读全文

理解python的multiprocessing.pool threadpool多线程

起因,我用多线程去用访问elasticsearch api时候,想拿到es返回的search结果。 默认python threading是不能获取返回的结果的。 有这么几种方式可以取到多线...

阅读全文