今天在和FK聊天的时候,聊到了利用gevent的多进程模式,我和他交流了下,我的用法,其实模仿了php-fpm的进程模式,就是fork进程,然后开辟一个队列,这个队列是放链接的对象,然后每个进程里面也有一个gevent pool池另外还附带一个队列 。   main Thred的队列是用来存放用户请求的链接对象,子进程的队列是根据gevent pool的数量定制的队列。 

爬虫真牛逼,这里标记下gevent多进程的原文地址,xiaorui.cc

FK推荐了用 gipc ,这名字就很有含义,gevent + ipc的缩写。为什么要命名为gipc那?  gevent 身为协程的架构,他们直接自己就可以通信呀。 因为gipc是多进程的通信,gipc他简单的实现了gevent的多进程,他的通信也比较的简单,就是pipe,管道。 

gipc和一般的pipe一样,都是支持duplex双工参数。算是个小应用吧,个人觉得,gipc实现多进程的效率不见得有多高,也就图个方便吧。 

gipc生成子进程很简单,就直接start_process就可以了。 

下面是一个既有子进程,又可以互相通信的例子,需要大家先 pip install gipc

IPC管道模式的通信,用来做两个进程之间的通信,也就是说,顶多就两个进程互相玩,你非要搞成n个客户端也是可以的,但是调度又tm是问题。   另外咱们今天说的gipc又不支持多个客户端,还不如用multiprocessing的manager实现数据的共享来的实在,再少都给你封装好了。 



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

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

关于gevent queue遭遇hub.LoopExit问题

我的上下文 “ gevent.hub.LoopExit: This operation would block forever”   ,   使用过gevent queue的朋友估摸会遇到这...

阅读全文

源码分析之gevent monkey.patch_all实现原理

我发现最近总是跟一些python的标准库及第三方的库干上了。 平时没怎么关注,但只要一遇到问题,就想刨根问底分析源代码 ! 这样不仅解决当前问题,还能学习下...

阅读全文

python下multiprocessing和gevent的组合使用

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

阅读全文

1则回应给“python使用gipc实现gevent的多进程及ipc通信”

  1. 奋战说道:

    这东西的场景有些窄

发表评论