PyPy 打算推出无 GIL 版本,或和默认版本分开发行 - 开源中国社区
PyPy 打算推出无 GIL 版本,或和默认版本分开发行
王练 2017年08月16日

PyPy 打算推出无 GIL 版本,或和默认版本分开发行

王练 王练 发布于2017年08月16日 收藏 2

【腾讯云】如何快速搭建微信小程序?>>>  

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 ,并不需要这么麻烦。

欢迎在下方评论,对此事发表自己的看法。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:PyPy 打算推出无 GIL 版本,或和默认版本分开发行
分享
评论(24)
精彩评论
7
就跟客户一样,说要这个需求,而且非常急非常重要。
然后你把实现的成本报个价给它,然后它回答说,大不了不用就是了。
2
看好python
2
我一直以为pypy是没有GIL的
最新评论
0

引用来自“久永”的评论

就跟客户一样,说要这个需求,而且非常急非常重要。
然后你把实现的成本报个价给它,然后它回答说,大不了不用就是了。

引用来自“壮士”的评论

说到心坎上去了~大兄弟~~~:sweat_smile:
说到心坎里也没见点赞。。。又一个样例。
0

引用来自“久永”的评论

就跟客户一样,说要这个需求,而且非常急非常重要。
然后你把实现的成本报个价给它,然后它回答说,大不了不用就是了。
说到心坎上去了~大兄弟~~~:sweat_smile:
0

引用来自“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/

引用来自“wei2011”的评论

Lua和JavaScript也不能通过多线程利用多核,想利用多核只能多进程,和python一样

引用来自“Raymin”的评论

说的不对,请花时间自己了解清楚。

引用来自“wei2011”的评论

请仔细理解“通过多线程利用多核”,而不只是”利用多核“。GIL是python多线程不能利用多核的原因,而python用多进程也一样可以利用多核。lua先不说,javascript(node.js)根本没有多线程这东西,这里说的多线程是系统级的线程,而不是协程之类的。所以,javascript利用多核也只能用多进程

引用来自“Raymin”的评论

不要为争论而“讨论”误导别人了。
NodeJS 是没有多线程的机制,但不代表 JavaScript 不支持多线程。
起码我知道的所有 JavaScript 引擎,都是线程安全的,都是支持多线程并发运行的。
要不然,就会导致所有的 JavaScript 脚本,永远只能利用一个 CPU 核心,那样浏览器会慢很多的。
你才误导别人。这篇说的GIL就是多线程机制下的锁,我说的就是语言的多线程机制。你说浏览器能用多个核心,那是浏览器的行为,不是javascript的行为,浏览器可以启动多个js引擎同时运行多段代码,但这个也多进程一样道理。启动多个引擎利用多核,哪个语言都可以,不单js,lua。只启动引擎通过多线程能利用多核对于脚本语言才是难题
0

引用来自“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/

引用来自“wei2011”的评论

Lua和JavaScript也不能通过多线程利用多核,想利用多核只能多进程,和python一样

引用来自“Raymin”的评论

说的不对,请花时间自己了解清楚。

引用来自“wei2011”的评论

请仔细理解“通过多线程利用多核”,而不只是”利用多核“。GIL是python多线程不能利用多核的原因,而python用多进程也一样可以利用多核。lua先不说,javascript(node.js)根本没有多线程这东西,这里说的多线程是系统级的线程,而不是协程之类的。所以,javascript利用多核也只能用多进程
不要为争论而“讨论”误导别人了。
NodeJS 是没有多线程的机制,但不代表 JavaScript 不支持多线程。
起码我知道的所有 JavaScript 引擎,都是线程安全的,都是支持多线程并发运行的。
要不然,就会导致所有的 JavaScript 脚本,永远只能利用一个 CPU 核心,那样浏览器会慢很多的。
0

引用来自“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/

引用来自“wei2011”的评论

Lua和JavaScript也不能通过多线程利用多核,想利用多核只能多进程,和python一样

引用来自“Raymin”的评论

说的不对,请花时间自己了解清楚。
请仔细理解“通过多线程利用多核”,而不只是”利用多核“。GIL是python多线程不能利用多核的原因,而python用多进程也一样可以利用多核。lua先不说,javascript(node.js)根本没有多线程这东西,这里说的多线程是系统级的线程,而不是协程之类的。所以,javascript利用多核也只能用多进程
0

引用来自“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/

引用来自“wei2011”的评论

Lua和JavaScript也不能通过多线程利用多核,想利用多核只能多进程,和python一样
说的不对,请花时间自己了解清楚。
0

引用来自“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/
Lua和JavaScript也不能通过多线程利用多核,想利用多核只能多进程,和python一样
0

引用来自“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/
有的: http://www.oschina.net/news/87619/tcltk-8-6-7
0

引用来自“久永”的评论

就跟客户一样,说要这个需求,而且非常急非常重要。
然后你把实现的成本报个价给它,然后它回答说,大不了不用就是了。
就服你
0

引用来自“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/
Lua,多线程?
0

引用来自“purple_grape”的评论

ruby vs jruby 也是一样,解释性语言的通病就是GIL

引用来自“MikeManilone”的评论

Perl 和 Tcl 没有 GIL。
Lua 和 JavaScript 也是没有的,可以很好地用于多线程环境。
和 Tcl 一样,可以在单进程中充分发挥多核的优势。
话说 Tcl 似乎是个被遗忘的宝,事件机制,安全沙盒模式,自带 Tk UI 库,Canvas 控件实现的也是相当强大。
前几天刚发布了 8.6.7,OSC 上连个新闻都没有,估计要被人彻底遗忘了。
网址:http://tcl.tk/
0

引用来自“purple_grape”的评论

ruby vs jruby 也是一样,解释性语言的通病就是GIL

引用来自“MikeManilone”的评论

Perl 和 Tcl 没有 GIL。
说的不严谨,谢谢纠正。
0

引用来自“twisted3”的评论

我一直以为pypy是没有GIL的

引用来自“bobo2cj”的评论

快到感觉不到
不写并行CPU密集型程序的话GIL确实不是问题。
0

引用来自“purple_grape”的评论

ruby vs jruby 也是一样,解释性语言的通病就是GIL
Perl 和 Tcl 没有 GIL。
0
ruby vs jruby 也是一样,解释性语言的通病就是GIL
0
感觉不错
0
7
就跟客户一样,说要这个需求,而且非常急非常重要。
然后你把实现的成本报个价给它,然后它回答说,大不了不用就是了。
0
可以使用协程嘛,然后关键是尽量多支持py3k啊。
0
都没有说一下那东西是拿来做什么的
顶部