Python 并发编程系列--2、并发方式的选择

上一篇直通车 Python 并发编程系列–1、浅谈GIL历史及对多线程的影响

前言

前面说了下GIL的历史,现在站在接受GIL的角度谈何时选择多线程、何时选择多进程的问题(不接受GIL那你用Jython呐2333)。

选择因素1–问题类型

简单的说,就是看你要解决问题属于什么类型。这块大体上分为两类–CPU密集型和I/O密集型,换句话说就是偏重于计算还是侧重输入输出。例如要进行科学计算,计算量很大,那就属于CPU密集型,因为对CPU的需求占据了主体。再比如写一个爬虫程序,其中大部分时间都花在从服务器读取数据的过程中,显然是I/O密集型。

选择因素2–多线程和多进程性能比对

关于性能比对,网上有很多比对多线程和多进程速度的例子,这里就不重复造轮子了。下面给出几个相关的链接,可以参考一下他们的测试结果。
这里直接给出多线程和多进程的对比结果:

  • 对于CPU密集型,效率关系:多进程>单进程(单线程)>多线程
  • 对于I/O密集型,效率关系:多线程>多进程>单进程(单线程)

    总结

    从以上结果不难看出,对于规模较大的问题,单进程(单线程)处理起来性能无法满足需要时就需要考虑并发了。CPU密集型的任务,用多进程;I/O密集型的任务,用多线程。

    下一篇直通车 Python 并发编程系列–3、多线程编程方法

文章目录
  1. 1. 上一篇直通车 Python 并发编程系列–1、浅谈GIL历史及对多线程的影响
  • 前言
    1. 1. 选择因素1–问题类型
    2. 2. 选择因素2–多线程和多进程性能比对
    3. 3. 总结
    4. 4. 下一篇直通车 Python 并发编程系列–3、多线程编程方法
  • ,