一个比较容易想到的办法是使用CPython进程代替线程作为CPU调度的单位,进程间通过管道、消息等机制进行通信。在系统级别上,产生一个进程当然比产生一个线程吃力得多,必须维护独立的地址空间和其中包含的所有资源,通信开销也比较高,但确实可以充分利用所有CPU核心的计算能力。多进程架构的天然优势是稳定性,单点失败不容易影响其它工作的正常执行。Python 2.4之前可以通过os.spawn、os.popen等模块衍生进程,Python 2.4提供了更为灵活的subprocess模块。

    循着相同的思路,Python 2.6引入了multiprocessing模块,其中包括进程 (Process)、进程池 (Pool)、进程管理者 (Manager)、管道 (Pipe)、队列 (Queue)、共享对象 (Proxy)、消息传递 (Connection) 以及锁 (Lock)、信号量 (Semaphore) 等常见的同步机制,为快速搭建高质量的多进程并发程序提供了基础。

你可能感兴趣的:(杂)