Python 社区一直有讨论移除 GIL(Global Interpreter Lock) 的声音,而且各解析器也有做各种尝试去解决这个问题。Jython 和 IronPython 在底层平台的帮助下已成功地将其移除,而像 gilectomy 、CPython 则还没有结果。
PyPy 团队 8 月 14 日发文表示,其团队自今年的 February Sprint 后一直在进行移除 GIL 的各种试验,希望能实现 IronPython 和 Jython 的效果(相比之下,他们认为在 CPython 中移除 GIL 会更难,因为还需要解决多线程引用计数的问题)。到目前为止,终于拥有了一个无 GIL 版的 PyPy ,它可以运行非常简单的多线程、并行化的程序,但如果是更复杂的程序可能会出现故障。后续将针对此问题进行重点研究。
不过由于这样的工作会使 PyPy 代码库和团队的日常工作复杂化,PyPy 团队表示想判断社区和商业伙伴(非个人捐赠)是否对该实现感兴趣。如果他们能得到一个 10 万美元的合同,他们将提供一个完整工作的 无 GIL PyPy 解释器,并可能与默认的 PyPy 版本分开发行。他们随后在文章中附上了具体的技术细节。
文章发布后,引起了 Python 群体的热议,有表示支持的,也有认为这其实就是在找投资,但没有看到明显的商业价值;还有人认为开发过程中其实可以忽略 GIL ,并不需要这么麻烦。
欢迎在下方评论,对此事发表自己的看法。
引用来自“久永”的评论
就跟客户一样,说要这个需求,而且非常急非常重要。然后你把实现的成本报个价给它,然后它回答说,大不了不用就是了。
引用来自“壮士”的评论
说到心坎上去了~大兄弟~~~😅引用来自“久永”的评论
就跟客户一样,说要这个需求,而且非常急非常重要。然后你把实现的成本报个价给它,然后它回答说,大不了不用就是了。
引用来自“purple_grape”的评论
ruby vs jruby 也是一样,解释性语言的通病就是GIL引用来自“MikeManilone”的评论
Perl 和 Tcl 没有 GIL。引用来自“Raymin”的评论
Lua 和 JavaScript 也是没有的,可以很好地用于多线程环境。和 Tcl 一样,可以在单进程中充分发挥多核的优势。
话说 Tcl 似乎是个被遗忘的宝,事件机制,安全沙盒模式,自带 Tk UI 库,Canvas 控件实现的也是相当强大。
前几天刚发布了 8.6.7,OSC 上连个新闻都没有,估计要被人彻底遗忘了。
网址:http://tcl.tk/
引用来自“久永”的评论
就跟客户一样,说要这个需求,而且非常急非常重要。然后你把实现的成本报个价给它,然后它回答说,大不了不用就是了。
引用来自“purple_grape”的评论
ruby vs jruby 也是一样,解释性语言的通病就是GIL引用来自“MikeManilone”的评论
Perl 和 Tcl 没有 GIL。引用来自“twisted3”的评论
我一直以为pypy是没有GIL的引用来自“bobo2cj”的评论
快到感觉不到引用来自“purple_grape”的评论
ruby vs jruby 也是一样,解释性语言的通病就是GIL然后你把实现的成本报个价给它,然后它回答说,大不了不用就是了。
引用来自“twisted3”的评论
我一直以为pypy是没有GIL的