有个人问我gevent怎么实现非堵塞的系统调用,当然threading是可以实现的, 但是大家知道threading是不太可控的。 python实现系统调用的模块还是很多的,比如subprocess,os popen,commands等。  现在高并发的服务基本都是这种协程实现的。 协程是个用户态的东西,相比线程的时间片的调度来说,他可以自己控制调度,基于事件的方式来监控堵塞的回调。 

gevent在1.0之后,支持的socket和subprocess的模块, 我测试过效率,线程的数目达到100后,有时候会出现少许的崩溃,但是用gevent的subprocess,不会出现这样的情况,及其的稳定。  我 gevent很有感觉,像以前写监控系统的服务端, 分布式的rpc调度,爬虫。。。。 

下面是执行后的结果,可以判定gevent subprocess没有发现堵塞的情况,是并发进行的。 



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

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

发表评论