用multiprocess里的Queue,它自带锁,也支持进程间通信 。它是通过共享内存实现的。
通常进程与线程通信,尽量不要用全局变量,或者是类似的概念。而是要用信号,事件,队列,共享内存这样的概念。
因为变量操作在python里不是原子操作。即使是C语言,在多线程环境,多CPU,多核的情况下,也不是唯一的了。 均需要锁。
但是锁这个东西往往是程序同步的瓶颈。所有有些设计,比如ErLang完全取消了这样的方式。
大部分情况下,我们使用消息队列,事件,线程池这样的设计来实现同步。
同步锁用了没?