在大多数系统上, Python支持多进程(基于消息传递)编程和多线程编程.
大多数人比较熟悉的是多线程编程, 但是在python中的多线程编程却是有诸多的限制.
python中多线程的限制
为了线程安全考虑, python的解释器还是使用了内部的GIL(Global Interperter Lock, 全局解释器锁定), 在任意时刻之运行单个python的线程执行.
即使有多个可用的cpu核心, 也是如此.这就限制了python只能在一个cpu核心上运行.
GIL的存在直接影响了程序的并发编程问题.
如果一个应用程序是大部分与I/O相关, 那么使用线程一般没有问题, 因为大部分时间是在I/O等待.
如果一个应用程序是CPU密集型的, 则使用多线程的坏处大于好处, 返回会降低程序的运行速度, 一般比你想象的还要慢的多.
因此, 用户在有些情况需要使用多进程(子进程和消息传递)
子进程和消息传递
展望未来, 如果要再python中进行各种类型的并发编程, 消息传递应该是最应该掌握的概念.