为了账号安全,请及时绑定邮箱和手机立即绑定

Python线程有问题吗?

Python线程有问题吗?

拉丁的传说 2021-03-21 16:16:53
一个可靠的编码员朋友告诉我,Python当前的多线程实现存在严重的错误-足以避免完全使用。关于这个谣言可以说些什么?
查看完整描述

4 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

GIL(全局解释器锁定)可能是一个问题,但是API还是可以的。试用出色的processing模块,该模块为单独的进程实现了Threading API。我现在正在使用它(尽管在OS X上,尚未在Windows上进行一些测试),并且给我留下了深刻的印象。在管理复杂性方面,Queue类确实为我节省了培根!

查看完整回答
反对 回复 2021-03-22
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

据我所知,没有真正的错误,但是由于GIL(全局解释器),在cPython中进行线程处理时的性能确实很差(与大多数其他线程实现相比,但如果所有大多数线程都被阻塞,通常都足够好)锁定),因此实际上它是特定于实现的,而不是特定于语言的。例如,Jython不会因为使用Java线程模型而受此困扰。

见这为什么它是不是真的可行,从CPython的实现去除GIL职位,这对一些实际的阐述和解决方法。


查看完整回答
反对 回复 2021-03-22
?
守候你守候我

TA贡献1802条经验 获得超10个赞

Python线程非常适合并发I / O编程。线程一旦阻塞等待文件,网络等的输入,就会被交换出CPU。这允许其他Python线程在其他线程等待时使用CPU。例如,这将允许您编写多线程Web服务器或Web搜寻器。

但是,Python线程在进入解释器核心时会被GIL序列化。这意味着,如果两个线程处理数字,则在任何给定时刻只能运行一个。这也意味着您无法利用多核或多处理器体系结构。

有一些解决方案,例如使用基于C的线程库同时运行多个Python解释器。这不是为了胆小,利益可能不值得麻烦。让我们希望在将来的版本中提供全Python解决方案。


查看完整回答
反对 回复 2021-03-22
  • 4 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号