Python多线程
python多线程并不是真正的多线程, 因为GIL( Global Interpreter Lock 全局解释器锁) ,任何时刻只能有一个线程在CPU上跑,即使是在一个多核机器上。所以Python多线程并不能发挥多核机器的优势,并不能达到想要的提升程序运行速度的效果。
Python多进程
可以用Python多进程实现并行编程。
Python多进程用起来比C/C++方便一起。 在C/C++中,要调用fork()函数创建子进程,不特别注意的话进程的数量会指数增加,而不是线性增加。如以下代码会创建8个进程,hello会被打印8次。
#include <stdio.h>
#include <sys/types.h>
int main()
{
fork();
fork();
fork();
printf("hello\n");
return 0;
}
而Pyton的多进程就简单的多, 还有进程池工具Pool可以用,如:
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
with Pool(5) as p:
print(p.map(f, [1, 2, 3]))
输出:
[1, 4, 9]
Ref:
https://www.jianshu.com/p/dbc3f3ceb5a7
https://docs.python.org/3/library/multiprocessing.html#process-and-exceptions
https://docs.python.org/2/library/pickle.html#what-can-be-pickled-and-unpickled