python的线程是并发还是并行_Python中的并发与并行

区别

并发:单处理器同时处理多个任务

并行:多处理器同时处理多个任务

在 Python 中,并发不是指同一时刻有多个任务同时进行,由于GIL(Global Interpreter Lock, 全局解释器锁),使得任何时刻仅有一个线程在执行。

因此python中的并发只不过任务之间的互相切换,直到所有任务完成,如下图。https://my.oschina.net/lichuangnk/blog/1818314

而并行,指的是同一时刻、同时发生,如下图。https://my.oschina.net/lichuangnk/blog/1818314

在Python 中,并行是 multi-processing 。比如你的电脑是8 核处理器,那么可以强制 Python 开8个进程运行程序,加快运行速度。

场景并发通常应用于 I/O 操作频繁的场景

比如你在实现一个爬虫时,从网页爬取多个图片/文件,读写操作的时间远大于 CPU 运行处理时间并行则更多应用于 CPU heavy 的场景,

比如 MapReduce 中的并行计算,通常为加快运行速度,使用多台服务器或者处理器

注意点

使用并发过程中,需要确切知道某个任务的哪个具体环节会造成I/O阻塞,在该处设置中断。从而让Event Loop对队列中的下一个任务进行调度。

如果当前任务不涉及较为耗时的I/O操作,协程效果相比单线程会差,因为Event Loop在调度过程中会损失一定的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值