• 隐藏侧边栏
  • 展开分类目录
  • 关注微信公众号
  • 我的GitHub
  • QQ:1753970025
Chen Jiehua

Python 多进程/线程 

数据量太大,单个进程处理不完,咋办?试试python的多进程/多线程并发……

multiprocessing

Process

multiprocessing模块提供了一个Process类来代表一个进程对象:

Queue

Gevent

Gevent是python的一个并发框架,以微线程greenlet为核心。

当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO。

gevent.monkey

由于切换是在IO操作时自动完成,所以gevent需要修改Python自带的一些标准库,这一过程在启动时通过monkey patch完成。

gevent.Greenlet

启动一个greenlet线程,我们可以通过 gevent.Greenlet

gevent.pool

如果要限制 greenlet 的数量,我们可以通过 gevent.pool 来实现:

gevent.queue

对于每个greeenlet执行的结果,我们可以通过 queue 来保存,统一处理:

 

码字很辛苦,转载请注明来自ChenJiehua《Python 多进程/线程》

评论