Python多线程

python有GIL(全局解释器锁)的限制,虽然Python解释器可以运行多个线程,但只有一个线程在解释器中运行。Python多线程相当于单核多线程。

如果一定要通过多线程利用多核,那只能通过C扩展来实现,不过这样就失去了Python简单易用的特点。但python可以通过多进程实现多核任务,多个Python进程有各自独立的GIL锁,互不影响。但是进程间通信相对比较麻烦,需要使用IPC机制(管道、套接字等)。

当python调用C扩展的时候,可以在C扩展中把GIL释放掉,从而达到使用多线程并行的目的。

GIL会在I/O调用(会调用内建的操作系统C代码)之前被释放,以允许其他线程在这个线程等待I/O的时候运行。I/O密集型的Python程序比计算密集型的Python程序更能充分利用多线程的好处。

我们可以把一些计算密集型任务用C语言编写,然后把.so链接库内容加载到Python中,因为执行C代码,GIL锁会释放,这样一来,就可以做到每个核都跑一个线程的目的。

参考资料python 多线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值