python多线程多进程并发编程

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值