Python是否支持多线程?可以加快执行时间吗?

Python是否支持多线程?可以加快执行时间吗?,第1张

Python是否支持多线程?可以加快执行时间吗?

GIL不会阻止线程化。GIL所做的全部工作就是确保一次只有一个线程在执行Python代码。控制仍然在线程之间切换。

GIL当时阻止的事情是利用多个CPU内核或单独的CPU并行运行线程。

这仅适用于Python代码。C扩展可以并且确实会发布GIL,以允许C代码的多个线程和一个Python线程跨多个内核运行。这扩展到由内核控制的I /
O,例如

select()
对套接字读写的调用,使Python在多线程多核设置中合理有效地处理网络事件。

然后,许多服务器部署将运行多个Python进程,以使OS处理进程之间的调度,以最大程度地利用CPU内核。如果适合您的用例,您还可以使用该

multiprocessing
库来处理来自一个代码库和父进程的多个进程的并行处理。

请注意,GIL仅适用于CPython实现。Jython和IronPython使用不同的线程实现(分别是本机Java VM和.NET公共运行时线程)。

直接解决更新问题:任何尝试使用纯Python代码从并行执行中提高速度的任务都不会看到加速,因为线程化的Python代码一次只能锁定一个线程。但是,如果混用C扩展名和I
/ O(例如PIL或numpy *** 作),则任何C代码都可以与 一个 活动的Python线程并行运行。

Python线程非常适合创建响应式GUI或处理多个简短的Web请求,而I /
O比Python代码更是瓶颈。它不适用于并行化计算量大的Python代码,不适合执行

multiprocessing
此类任务的模块或委托给专用的外部库。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5646008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存