猿问

Python线程有问题吗?

一个可靠的编码员朋友告诉我,Python当前的多线程实现存在严重的错误-足以避免完全使用。关于这个谣言可以说些什么?


拉丁的传说
浏览 170回答 4
4回答

慕村225694

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

婷婷同学_

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

守候你守候我

Python线程非常适合并发I / O编程。线程一旦阻塞等待文件,网络等的输入,就会被交换出CPU。这允许其他Python线程在其他线程等待时使用CPU。例如,这将允许您编写多线程Web服务器或Web搜寻器。但是,Python线程在进入解释器核心时会被GIL序列化。这意味着,如果两个线程处理数字,则在任何给定时刻只能运行一个。这也意味着您无法利用多核或多处理器体系结构。有一些解决方案,例如使用基于C的线程库同时运行多个Python解释器。这不是为了胆小,利益可能不值得麻烦。让我们希望在将来的版本中提供全Python解决方案。
随时随地看视频慕课网APP

相关分类

Python
我要回答