d********g 发帖数: 10550 | 1 https://github.com/google/grumpy/issues/1
现在Python新项目不用3.5+都不好意思和人打招呼,刚出的3.6更爽了。还守着2.7,这
是留着辫子不剪的节奏吗?
如果不是维护一个已经至少5年前的或者已废弃的项目,没有任何理由不用3.5+
对Python不熟的或者只看中文教程的另论 |
w***g 发帖数: 5958 | 2 从python2.7转出来是肯定的。但未必转入python3。
因为python2到python3的改进太incremental。光看语言和解释器,
其实还是拼不过julia和javascript。现在吸引人用python的,
根本就不是python这个语言,而是用python写的一堆legacy。
在我看来python3就是作死。等julia的轮子赶上了,
谁还用python?
if it ain't broke, don't fix it。
要没有python3,说不定python早统治地球了。
【在 d********g 的大作中提到】 : https://github.com/google/grumpy/issues/1 : 现在Python新项目不用3.5+都不好意思和人打招呼,刚出的3.6更爽了。还守着2.7,这 : 是留着辫子不剪的节奏吗? : 如果不是维护一个已经至少5年前的或者已废弃的项目,没有任何理由不用3.5+ : 对Python不熟的或者只看中文教程的另论
|
d********g 发帖数: 10550 | 3 “等julia的轮子赶上了”本身就是个wishful thinking和伪命题呀,这说法适用于任
何语言包括Python 3,况且Python的ecosystem已经完成了3的全面兼容
如果你仔细看过Python 3.5、3.6的变化肯定不会这么说。3.4包括之前的Python 3.x和
3.5+都不是一回事
JavaScript和别的根本不冲突,如果说的是server那Node.js还远远不够。Node.js的看
家本领async性能现在都被Python 3 asyncio + uvloop爆菊了:
https://magic.io/blog/uvloop-blazing-fast-python-networking/
当然没有任何语言/框架可以一招鲜吃遍天
【在 w***g 的大作中提到】 : 从python2.7转出来是肯定的。但未必转入python3。 : 因为python2到python3的改进太incremental。光看语言和解释器, : 其实还是拼不过julia和javascript。现在吸引人用python的, : 根本就不是python这个语言,而是用python写的一堆legacy。 : 在我看来python3就是作死。等julia的轮子赶上了, : 谁还用python? : if it ain't broke, don't fix it。 : 要没有python3,说不定python早统治地球了。
|
x***4 发帖数: 1815 | 4 我觉得好找工作就三样:js java python
3.
【在 d********g 的大作中提到】 : “等julia的轮子赶上了”本身就是个wishful thinking和伪命题呀,这说法适用于任 : 何语言包括Python 3,况且Python的ecosystem已经完成了3的全面兼容 : 如果你仔细看过Python 3.5、3.6的变化肯定不会这么说。3.4包括之前的Python 3.x和 : 3.5+都不是一回事 : JavaScript和别的根本不冲突,如果说的是server那Node.js还远远不够。Node.js的看 : 家本领async性能现在都被Python 3 asyncio + uvloop爆菊了: : https://magic.io/blog/uvloop-blazing-fast-python-networking/ : 当然没有任何语言/框架可以一招鲜吃遍天
|
N*****m 发帖数: 42603 | 5 很简单啊,用six好了
【在 w***g 的大作中提到】 : 从python2.7转出来是肯定的。但未必转入python3。 : 因为python2到python3的改进太incremental。光看语言和解释器, : 其实还是拼不过julia和javascript。现在吸引人用python的, : 根本就不是python这个语言,而是用python写的一堆legacy。 : 在我看来python3就是作死。等julia的轮子赶上了, : 谁还用python? : if it ain't broke, don't fix it。 : 要没有python3,说不定python早统治地球了。
|
d********g 发帖数: 10550 | 6 语法层面的兼容还不是最主要的。新feature太多了,Python 2.7早该死透了
【在 N*****m 的大作中提到】 : 很简单啊,用six好了
|
d********g 发帖数: 10550 | 7 前几年还在吹Ruby和RoR。事实证明Ruby死透了
【在 x***4 的大作中提到】 : 我觉得好找工作就三样:js java python : : 3.
|
x****u 发帖数: 44466 | 8 py3队友太坑没办法
比如mxnex网站说本库在py3上有很多坑,建议用py2,你怎么办?
opencv官网根本不支持py3,得找第三方
【在 d********g 的大作中提到】 : https://github.com/google/grumpy/issues/1 : 现在Python新项目不用3.5+都不好意思和人打招呼,刚出的3.6更爽了。还守着2.7,这 : 是留着辫子不剪的节奏吗? : 如果不是维护一个已经至少5年前的或者已废弃的项目,没有任何理由不用3.5+ : 对Python不熟的或者只看中文教程的另论
|
x****u 发帖数: 44466 | 9 js的优势是fp加语法极简,这和python不是一个食物链的也不太可能互相取代
python是语法糖工具糖太多,以至于做任何事前我都google半天找个一句实现写法
【在 d********g 的大作中提到】 : “等julia的轮子赶上了”本身就是个wishful thinking和伪命题呀,这说法适用于任 : 何语言包括Python 3,况且Python的ecosystem已经完成了3的全面兼容 : 如果你仔细看过Python 3.5、3.6的变化肯定不会这么说。3.4包括之前的Python 3.x和 : 3.5+都不是一回事 : JavaScript和别的根本不冲突,如果说的是server那Node.js还远远不够。Node.js的看 : 家本领async性能现在都被Python 3 asyncio + uvloop爆菊了: : https://magic.io/blog/uvloop-blazing-fast-python-networking/ : 当然没有任何语言/框架可以一招鲜吃遍天
|
d********g 发帖数: 10550 | 10 JS还极简?试试ES2015加React呵呵。JS本来就是和别的互补的,说取代的是指Node.js
感觉你第二句说的其实是Ruby才对
【在 x****u 的大作中提到】 : js的优势是fp加语法极简,这和python不是一个食物链的也不太可能互相取代 : python是语法糖工具糖太多,以至于做任何事前我都google半天找个一句实现写法
|
|
|
x****u 发帖数: 44466 | 11 ruby库不够多啊
ES就算是JS的修正版吧,JS这玩意实际上就是非前缀表达式的lisp,语法和实现都简单
js
【在 d********g 的大作中提到】 : JS还极简?试试ES2015加React呵呵。JS本来就是和别的互补的,说取代的是指Node.js : 感觉你第二句说的其实是Ruby才对
|
d********g 发帖数: 10550 | 12 我是说Ruby才会遇到语法糖太多不好选择的情况。Python一直都号称做一件事情只有一
个最佳方法
【在 x****u 的大作中提到】 : ruby库不够多啊 : ES就算是JS的修正版吧,JS这玩意实际上就是非前缀表达式的lisp,语法和实现都简单 : : js
|
x****u 发帖数: 44466 | 13 是啊,所以你得搞清楚什么是最佳
你看网上那么多python例子,有几个写到极简了?
【在 d********g 的大作中提到】 : 我是说Ruby才会遇到语法糖太多不好选择的情况。Python一直都号称做一件事情只有一 : 个最佳方法
|
d********g 发帖数: 10550 | 14 我们说的是一件事吗?举个例子呢?
【在 x****u 的大作中提到】 : 是啊,所以你得搞清楚什么是最佳 : 你看网上那么多python例子,有几个写到极简了?
|
x****u 发帖数: 44466 | 15 比如with,for list之类的东西,很多人根本不用
很多事情本来有库,却有人重新实现一遍
【在 d********g 的大作中提到】 : 我们说的是一件事吗?举个例子呢?
|
d********g 发帖数: 10550 | 16 所以说Python是容易入门也容易被误解的一门语言。小白花1小时就敢写到简历上说“
会Python”,不知道这个“会”和业界需要的真“会”差了十万八千里。还有个特点是
小白很喜欢写Python“教程”。别看这些所谓的“教程”
【在 x****u 的大作中提到】 : 比如with,for list之类的东西,很多人根本不用 : 很多事情本来有库,却有人重新实现一遍
|
x****u 发帖数: 44466 | 17 是的
看很多C程序员写的python,大数据就是直接for去操作list,然后这些人转身就骂
python效率低
【在 d********g 的大作中提到】 : 所以说Python是容易入门也容易被误解的一门语言。小白花1小时就敢写到简历上说“ : 会Python”,不知道这个“会”和业界需要的真“会”差了十万八千里。还有个特点是 : 小白很喜欢写Python“教程”。别看这些所谓的“教程”
|
d********g 发帖数: 10550 | 18 应该就像计算机二级和专业C码工的区别吧
【在 x****u 的大作中提到】 : 是的 : 看很多C程序员写的python,大数据就是直接for去操作list,然后这些人转身就骂 : python效率低
|
y****w 发帖数: 3747 | 19 用for干这事儿的那是根本没一点sense的垃圾程序员。有经验的从其他语言过来,但不
专业用python的,关注的还是通用语法加一些最常用的feature,那么多语法糖是被深
恶痛绝的。
你要每天都在这个语言上工作那是另外一回事儿。
没有多少需求的假扮酷没意思。就好象你就几台server,有几个通用脚本就可以管理的
很好,非得脑子抽抽去弄成puppet的provider,就是找抽,或者领导脑子抽抽了。
【在 x****u 的大作中提到】 : 是的 : 看很多C程序员写的python,大数据就是直接for去操作list,然后这些人转身就骂 : python效率低
|
b****b 发帖数: 656 | 20 自己维护的几个库,fork了个python2的branch,现在只维护python3了。新project都
是python 3 only。
【在 d********g 的大作中提到】 : https://github.com/google/grumpy/issues/1 : 现在Python新项目不用3.5+都不好意思和人打招呼,刚出的3.6更爽了。还守着2.7,这 : 是留着辫子不剪的节奏吗? : 如果不是维护一个已经至少5年前的或者已废弃的项目,没有任何理由不用3.5+ : 对Python不熟的或者只看中文教程的另论
|
|
|
w***g 发帖数: 5958 | 21 楼主请科普下python3最主要的特性。我被你种草了,可能要跳船了。
不过我认识的几个硅谷资深engineer大家一起写程序,上来就默契
python 2.7,关于用啥语言用啥版本不需要任何交流。
我要是python 3了岂不跟大家都不一样了? 我认识那些都是很靠
谱的人。
【在 d********g 的大作中提到】 : https://github.com/google/grumpy/issues/1 : 现在Python新项目不用3.5+都不好意思和人打招呼,刚出的3.6更爽了。还守着2.7,这 : 是留着辫子不剪的节奏吗? : 如果不是维护一个已经至少5年前的或者已废弃的项目,没有任何理由不用3.5+ : 对Python不熟的或者只看中文教程的另论
|
N*****m 发帖数: 42603 | 22 我们的要求是用six,这样就没问题了
【在 w***g 的大作中提到】 : 楼主请科普下python3最主要的特性。我被你种草了,可能要跳船了。 : 不过我认识的几个硅谷资深engineer大家一起写程序,上来就默契 : python 2.7,关于用啥语言用啥版本不需要任何交流。 : 我要是python 3了岂不跟大家都不一样了? 我认识那些都是很靠 : 谱的人。
|
d********g 发帖数: 10550 | 23 3.4+主要是asyncio相关。Python 3.4开始内置asyncio,3.3还需要额外装库。3.5加入
async/await语法,3.6更是把async/await推广到其它地方比如generator:
https://docs.python.org/3/whatsnew/3.5.html
https://docs.python.org/3/whatsnew/3.6.html
3.6的dict也重新实现了,性能提升内存占用下降的同时,带来的一个副产品是dict现
在也可以直接当OrderedDict用了,虽然这个特性还没有正式在API上确认
在公司还用Python 2.7很正常,但是自己写新项目还用2.7就是自己给自己挖坑了。这
两个版本我都写,自己的非开源项目反而故意不要语法兼容(比如能用高版本async/
await的就绝对不用低版本兼容的yield),强制跟上3.x的升级,这样以后的维护坑会
更少
别的不说,Python 2.7里经常需要from __future__ import absolute_import,
unicode_literals等,这都是2.x设计缺陷导致的monkey patch,没注意就很容易掉坑里
3.x整个相对于2.7的更新那是太多了。之前有人列了10个比较重要的:
http://www.asmeurer.com/python3-presentation/slides.html
我个人很喜欢这样的signature:
def xxx(a, b, c, *args, x=None, y=None, z=None, **kwargs):
...
这可以保证a,b,c和x,y,z分别被当成args和kwargs,也就是防止x,y,z被误操作。2.7不
支持这样的语法
【在 w***g 的大作中提到】 : 楼主请科普下python3最主要的特性。我被你种草了,可能要跳船了。 : 不过我认识的几个硅谷资深engineer大家一起写程序,上来就默契 : python 2.7,关于用啥语言用啥版本不需要任何交流。 : 我要是python 3了岂不跟大家都不一样了? 我认识那些都是很靠 : 谱的人。
|
d********g 发帖数: 10550 | 24 是的。Django这样的大库,接下来1.11 LTS也会是最后一个支持Python 2.7的版本了,
因为Python 2.7本身到2020年就完全不维护了:
https://pythonclock.org
整个ecosystem已经在告别2.7,这是没有疑问的
【在 b****b 的大作中提到】 : 自己维护的几个库,fork了个python2的branch,现在只维护python3了。新project都 : 是python 3 only。
|
m*****n 发帖数: 3575 | 25 py3在网络方面的进步大
另外支持中文
当然你说你也就用它洗洗数据,懒得换新,我也无话可说 |
w***g 发帖数: 5958 | 26 是啊, 本来就是当他是个glue language用的。真货都在C++里。
C++要写的精致能维护,python的能跑起来就行,反正说不定
哪天就跳船了。我一直就是这么想的。
【在 m*****n 的大作中提到】 : py3在网络方面的进步大 : 另外支持中文 : 当然你说你也就用它洗洗数据,懒得换新,我也无话可说
|
i******e 发帖数: 24 | 27 这些东西 90%的程序根本用不到
python 3的问题是,不兼容,新的feature 又不是多离不开。
【在 d********g 的大作中提到】 : 3.4+主要是asyncio相关。Python 3.4开始内置asyncio,3.3还需要额外装库。3.5加入 : async/await语法,3.6更是把async/await推广到其它地方比如generator: : https://docs.python.org/3/whatsnew/3.5.html : https://docs.python.org/3/whatsnew/3.6.html : 3.6的dict也重新实现了,性能提升内存占用下降的同时,带来的一个副产品是dict现 : 在也可以直接当OrderedDict用了,虽然这个特性还没有正式在API上确认 : 在公司还用Python 2.7很正常,但是自己写新项目还用2.7就是自己给自己挖坑了。这 : 两个版本我都写,自己的非开源项目反而故意不要语法兼容(比如能用高版本async/ : await的就绝对不用低版本兼容的yield),强制跟上3.x的升级,这样以后的维护坑会 : 更少
|
b****b 发帖数: 656 | 28 呵呵,第一次看见
def fun(*, a=1, b=2)
还吓了我一跳,琢磨了一会才知道怎么回事。
【在 d********g 的大作中提到】 : 3.4+主要是asyncio相关。Python 3.4开始内置asyncio,3.3还需要额外装库。3.5加入 : async/await语法,3.6更是把async/await推广到其它地方比如generator: : https://docs.python.org/3/whatsnew/3.5.html : https://docs.python.org/3/whatsnew/3.6.html : 3.6的dict也重新实现了,性能提升内存占用下降的同时,带来的一个副产品是dict现 : 在也可以直接当OrderedDict用了,虽然这个特性还没有正式在API上确认 : 在公司还用Python 2.7很正常,但是自己写新项目还用2.7就是自己给自己挖坑了。这 : 两个版本我都写,自己的非开源项目反而故意不要语法兼容(比如能用高版本async/ : await的就绝对不用低版本兼容的yield),强制跟上3.x的升级,这样以后的维护坑会 : 更少
|
d*******r 发帖数: 3299 | 29 传言 Python 要加 optional static type? 这个啥时候能有消息
【在 d********g 的大作中提到】 : 3.4+主要是asyncio相关。Python 3.4开始内置asyncio,3.3还需要额外装库。3.5加入 : async/await语法,3.6更是把async/await推广到其它地方比如generator: : https://docs.python.org/3/whatsnew/3.5.html : https://docs.python.org/3/whatsnew/3.6.html : 3.6的dict也重新实现了,性能提升内存占用下降的同时,带来的一个副产品是dict现 : 在也可以直接当OrderedDict用了,虽然这个特性还没有正式在API上确认 : 在公司还用Python 2.7很正常,但是自己写新项目还用2.7就是自己给自己挖坑了。这 : 两个版本我都写,自己的非开源项目反而故意不要语法兼容(比如能用高版本async/ : await的就绝对不用低版本兼容的yield),强制跟上3.x的升级,这样以后的维护坑会 : 更少
|
d********g 发帖数: 10550 | 30 只能说可能你的typical use case只是把Python当简单的脚本语言使用。脚本啥都行,
Ruby、shell随便使
Python 3已经不是5年前的状态了。不说老的库基本都搞定了3,如果现在的新开源库出
来不支持3那直接就是自杀
还是那句话,“会Python”是一个很模糊的概念。写个hello world有些人也认为会了
,谁让Python容易入门呢
【在 i******e 的大作中提到】 : 这些东西 90%的程序根本用不到 : python 3的问题是,不兼容,新的feature 又不是多离不开。
|
|
|
d********g 发帖数: 10550 | 31 3.5开始就有Type Hints了呀,虽然还是provisional的:
https://docs.python.org/3/library/typing.html
mypy也有支持:
http://mypy-lang.org
看吧让你们用2.7 :)
【在 d*******r 的大作中提到】 : 传言 Python 要加 optional static type? 这个啥时候能有消息
|
l*********s 发帖数: 5409 | 32 type hint对优化有帮助吗?
【在 d********g 的大作中提到】 : 3.5开始就有Type Hints了呀,虽然还是provisional的: : https://docs.python.org/3/library/typing.html : mypy也有支持: : http://mypy-lang.org : 看吧让你们用2.7 :)
|
d*******r 发帖数: 3299 | 33 哈哈,大牛见笑了, 我out了, 真没用过 Python3 写项目 :D
【在 d********g 的大作中提到】 : 3.5开始就有Type Hints了呀,虽然还是provisional的: : https://docs.python.org/3/library/typing.html : mypy也有支持: : http://mypy-lang.org : 看吧让你们用2.7 :)
|
s********k 发帖数: 6180 | 34 2.7的项目要port 到py 3,flask写的简单APP是不是也不需要太多工作?
【在 d********g 的大作中提到】 : 3.5开始就有Type Hints了呀,虽然还是provisional的: : https://docs.python.org/3/library/typing.html : mypy也有支持: : http://mypy-lang.org : 看吧让你们用2.7 :)
|
d********g 发帖数: 10550 | 35 Flask的port分分钟,它本身是支持的,就看你有没有写兼容代码。如果用了别的lib主
要是看那些
【在 s********k 的大作中提到】 : 2.7的项目要port 到py 3,flask写的简单APP是不是也不需要太多工作?
|
h**********c 发帖数: 4120 | |
s********k 发帖数: 6180 | 37 ananconda现在是对2.7的支持好还是3.5+的支持好?
【在 d********g 的大作中提到】 : Flask的port分分钟,它本身是支持的,就看你有没有写兼容代码。如果用了别的lib主 : 要是看那些
|
d********g 发帖数: 10550 | 38 感觉数值方面的可能要安全些(比如int/float可以指定),其它也没用过
对IDE肯定更友好,不用那么费劲猜来猜去
【在 l*********s 的大作中提到】 : type hint对优化有帮助吗?
|
w*x 发帖数: 518 | 39 小弟在这里有一个不成熟的提议:
作为3年前从py27跳到py3k的人,我最大的感慨就是“用一下python 3试试看,不喜欢
大不了再换回去”。我跳了以后发现语法功能都舒畅了很多,再也没有回来;偶尔必须
用python 2的时候,也完全没有压力(写出兼容的程序真的很容易)。
还有一个对GIL的感觉:我的(以及我猜大部分人)工作中具体的heavy lifting都是用
C/C++/Fortran实现的,Python只不过胶水一下而已。在Python层面,fine grain
control真的那么必要吗,这个语言本身就不适合做这些,调用更底层的包然后让他们
multithreading就是了…… |
w*x 发帖数: 518 | 40 我最喜欢Python的地方除了它的ecosystem以外,当作胶水语言,语法简洁真的很爽。
BTW - 我是做材料测试和有限元仿真的工程师,所以虽然经常写一些需要重复或者给同
事使用的code,可能在大家的世界里也还是“大号的脚本”而不是production code…
…对于那一个领域我就不知道了…… |
|
|
x****u 发帖数: 44466 | 41 我个人是认为py3好的,就好像认为世界语比英语好一样,问题是如果其他人不迁过去
,自己拼命填坑是不行的
【在 w*x 的大作中提到】 : 小弟在这里有一个不成熟的提议: : 作为3年前从py27跳到py3k的人,我最大的感慨就是“用一下python 3试试看,不喜欢 : 大不了再换回去”。我跳了以后发现语法功能都舒畅了很多,再也没有回来;偶尔必须 : 用python 2的时候,也完全没有压力(写出兼容的程序真的很容易)。 : 还有一个对GIL的感觉:我的(以及我猜大部分人)工作中具体的heavy lifting都是用 : C/C++/Fortran实现的,Python只不过胶水一下而已。在Python层面,fine grain : control真的那么必要吗,这个语言本身就不适合做这些,调用更底层的包然后让他们 : multithreading就是了……
|
w*x 发帖数: 518 | 42 是这个理。不过可能是因为大部分我用到的常用包裹都迁移过去了,我觉得这个坑已经
很小了。
确实也会遇到我用的包裹没有py3的时候,不过情况很少。
【在 x****u 的大作中提到】 : 我个人是认为py3好的,就好像认为世界语比英语好一样,问题是如果其他人不迁过去 : ,自己拼命填坑是不行的
|
d********g 发帖数: 10550 | 43 其实3.4因为asyncio的吸引力已经成功搞定了社区(3.3和之前的确实转不转没啥太大
实质性的好处)。其实也才两三年功夫,已经没啥坑了。这个趋势你可能没有太关注
【在 x****u 的大作中提到】 : 我个人是认为py3好的,就好像认为世界语比英语好一样,问题是如果其他人不迁过去 : ,自己拼命填坑是不行的
|
d********g 发帖数: 10550 | 44 py2/py3还分包的类型。比如Supervisor到现在是没搞定py3,但是不影响,因为大多数
人就是把它当一个工具使用,和systemd、launchd一个性质,很独立。需要搞定py3的
一般是dev用的,现在基本都没有坑了
【在 w*x 的大作中提到】 : 是这个理。不过可能是因为大部分我用到的常用包裹都迁移过去了,我觉得这个坑已经 : 很小了。 : 确实也会遇到我用的包裹没有py3的时候,不过情况很少。
|
d*******r 发帖数: 3299 | 45 对 IDE 友好,就帮助很大了, 赞一个.
大牛有在 production 代码中大量使用 type hint 么?
我以前最不爽 Python 的地方之一,就是 server 上跑出个错误,
一查 log 是 runtime type 错误 blablabla >_<
【在 d********g 的大作中提到】 : 感觉数值方面的可能要安全些(比如int/float可以指定),其它也没用过 : 对IDE肯定更友好,不用那么费劲猜来猜去
|
E***r 发帖数: 1037 | 46 dict默认ordered是向ruby看齐吧
【在 d********g 的大作中提到】 : 3.4+主要是asyncio相关。Python 3.4开始内置asyncio,3.3还需要额外装库。3.5加入 : async/await语法,3.6更是把async/await推广到其它地方比如generator: : https://docs.python.org/3/whatsnew/3.5.html : https://docs.python.org/3/whatsnew/3.6.html : 3.6的dict也重新实现了,性能提升内存占用下降的同时,带来的一个副产品是dict现 : 在也可以直接当OrderedDict用了,虽然这个特性还没有正式在API上确认 : 在公司还用Python 2.7很正常,但是自己写新项目还用2.7就是自己给自己挖坑了。这 : 两个版本我都写,自己的非开源项目反而故意不要语法兼容(比如能用高版本async/ : await的就绝对不用低版本兼容的yield),强制跟上3.x的升级,这样以后的维护坑会 : 更少
|
E***r 发帖数: 1037 | 47 看了pypy网页
dict的新实现用了个动态整型数组
variable_int *sparse_array;
来标记NULL的dict entries
所以更省内存和cache友好了
默认oredered是新实现的副产品
生产环境不能依赖这一实现特征
而是应该继续使用OrederedDict
毕竟后者已经变成一个薄封装了
【在 d********g 的大作中提到】 : 3.4+主要是asyncio相关。Python 3.4开始内置asyncio,3.3还需要额外装库。3.5加入 : async/await语法,3.6更是把async/await推广到其它地方比如generator: : https://docs.python.org/3/whatsnew/3.5.html : https://docs.python.org/3/whatsnew/3.6.html : 3.6的dict也重新实现了,性能提升内存占用下降的同时,带来的一个副产品是dict现 : 在也可以直接当OrderedDict用了,虽然这个特性还没有正式在API上确认 : 在公司还用Python 2.7很正常,但是自己写新项目还用2.7就是自己给自己挖坑了。这 : 两个版本我都写,自己的非开源项目反而故意不要语法兼容(比如能用高版本async/ : await的就绝对不用低版本兼容的yield),强制跟上3.x的升级,这样以后的维护坑会 : 更少
|
w***g 发帖数: 5958 | 48 async是反人类的编程模式。现在core那么多,massive threading
才是正道。Industry跟风的人太多,又折腾不出新鲜玩意儿才搞
async。
【在 d********g 的大作中提到】 : 其实3.4因为asyncio的吸引力已经成功搞定了社区(3.3和之前的确实转不转没啥太大 : 实质性的好处)。其实也才两三年功夫,已经没啥坑了。这个趋势你可能没有太关注
|
d********g 发帖数: 10550 | 49 也不能这么说,否则整个JavaScript社区集体躺枪
【在 w***g 的大作中提到】 : async是反人类的编程模式。现在core那么多,massive threading : 才是正道。Industry跟风的人太多,又折腾不出新鲜玩意儿才搞 : async。
|
N*****m 发帖数: 42603 | 50 seastar就是async啊
【在 w***g 的大作中提到】 : async是反人类的编程模式。现在core那么多,massive threading : 才是正道。Industry跟风的人太多,又折腾不出新鲜玩意儿才搞 : async。
|
|
|
w***g 发帖数: 5958 | 51 C/C++追求高性能用async没有问题。java用async也没问题。
python本来就是低性能语言,来掺和什么。
【在 N*****m 的大作中提到】 : seastar就是async啊
|
N*****m 发帖数: 42603 | 52 这个我同意,哈哈
【在 w***g 的大作中提到】 : C/C++追求高性能用async没有问题。java用async也没问题。 : python本来就是低性能语言,来掺和什么。
|
w***g 发帖数: 5958 | 53 刚刚我其实想到了这个笑话
在家里听到这样一个段子:市政协会议散会,几个身价十亿+的老板去打牌,某超市连
锁企业的老板也是身家过亿的政协委员,和他们一起开过几次会,也提出去一起玩。煤
老板们面面相觑,最后还是首富张嘴说话了: “我们哥几个一起玩,是因为我们都有
产业,你一个开小卖店的跟着我们凑什么热闹?”然后在凛冽的秋风中,超市老板悻悻
地回家了……
【在 N*****m 的大作中提到】 : 这个我同意,哈哈
|
d********g 发帖数: 10550 | 54 不是发过asyncio + uvloop已经完爆其他了吗,和go不相上下——这么说go也是低性能
语言了?
【在 w***g 的大作中提到】 : C/C++追求高性能用async没有问题。java用async也没问题。 : python本来就是低性能语言,来掺和什么。
|
w********m 发帖数: 1137 | 55 python做REPL没有更适合的,相当于匕首。
java和C++这些编译语言,相当于大刀。
一寸短,一寸险;一寸长,一寸强。
出去混,最好都要带着 |
N*****m 发帖数: 42603 | 56 能再贴一遍吗?
【在 d********g 的大作中提到】 : 不是发过asyncio + uvloop已经完爆其他了吗,和go不相上下——这么说go也是低性能 : 语言了?
|
d********g 发帖数: 10550 | 57 https://magic.io/blog/uvloop-blazing-fast-python-networking/
asyncio本身就已经和Node.js旗鼓相当了,再加上uvloop之后Node.js被甩开一百条街
Yury Selivanov是个神人,Python的核心开发者之一:
https://bugs.python.org/issue28544
【在 N*****m 的大作中提到】 : 能再贴一遍吗?
|
x****u 发帖数: 44466 | 58 关键不是我,是其它人离不开py27
惯性力量很大的,fortran都多少年了啊
【在 d********g 的大作中提到】 : 其实3.4因为asyncio的吸引力已经成功搞定了社区(3.3和之前的确实转不转没啥太大 : 实质性的好处)。其实也才两三年功夫,已经没啥坑了。这个趋势你可能没有太关注
|
x****u 发帖数: 44466 | 59 多线程不好写啊,90%C++多线程都有bug
【在 w***g 的大作中提到】 : async是反人类的编程模式。现在core那么多,massive threading : 才是正道。Industry跟风的人太多,又折腾不出新鲜玩意儿才搞 : async。
|
w***g 发帖数: 5958 | 60 你这么说也对!
【在 x****u 的大作中提到】 : 多线程不好写啊,90%C++多线程都有bug
|
|
|
s********k 发帖数: 6180 | 61 3.4以上如果起thread,默认就是异步模式?是不是GIL问题解决了?
【在 d********g 的大作中提到】 : 其实3.4因为asyncio的吸引力已经成功搞定了社区(3.3和之前的确实转不转没啥太大 : 实质性的好处)。其实也才两三年功夫,已经没啥坑了。这个趋势你可能没有太关注
|
d********g 发帖数: 10550 | 62 Python因为GIL导致thread不行,所以就只好asyncio啦。异步单线程
【在 s********k 的大作中提到】 : 3.4以上如果起thread,默认就是异步模式?是不是GIL问题解决了?
|
d********g 发帖数: 10550 | 63 thread和asyncio没啥关系。用thread还是会有GIL问题
【在 s********k 的大作中提到】 : 3.4以上如果起thread,默认就是异步模式?是不是GIL问题解决了?
|
E***r 发帖数: 1037 | 64
试装了一下uvloop,貌似只支持到 py35。py36 估计要等一阵子。
(py36) $ anaconda show anaconda-platform/uvloop
Using Anaconda API: https://api.anaconda.org
Name: uvloop
Summary:
Access: public
Package Types: conda
Versions:
+ 0.6.5
(py36): $ conda install --channel https://conda.anaconda.org/anaconda-
platform uvloop
Fetching package metadata ...........
Solving package specifications: .
UnsatisfiableError: The following specifications were found to be in
conflict:
- python 3.6*
- uvloop -> python 3.5* -> openssl 1.0.1*
- uvloop -> python 3.5* -> xz 5.0.5
【在 d********g 的大作中提到】 : https://magic.io/blog/uvloop-blazing-fast-python-networking/ : asyncio本身就已经和Node.js旗鼓相当了,再加上uvloop之后Node.js被甩开一百条街 : Yury Selivanov是个神人,Python的核心开发者之一: : https://bugs.python.org/issue28544
|
E***r 发帖数: 1037 | 65
uvloop-0.7.0 以后貌似支持 py36 了,看来只能从 pip 装了
https://github.com/MagicStack/uvloop/issues/69
【在 E***r 的大作中提到】 : : 试装了一下uvloop,貌似只支持到 py35。py36 估计要等一阵子。 : (py36) $ anaconda show anaconda-platform/uvloop : Using Anaconda API: https://api.anaconda.org : Name: uvloop : Summary: : Access: public : Package Types: conda : Versions: : + 0.6.5
|
x***4 发帖数: 1815 | 66 所以还是actor reactor好。自己写的code是单线程的。多线程异步的工作留给
framework。
【在 x****u 的大作中提到】 : 多线程不好写啊,90%C++多线程都有bug
|
m*****n 发帖数: 3575 | 67 请问你试过python编Gui么?
感觉PyQt的信号/槽思维方式虽然方便,但是处处和python不兼容啊
【在 x****u 的大作中提到】 : 多线程不好写啊,90%C++多线程都有bug
|
d********g 发帖数: 10550 | 68 signal/slot那是Qt自己的事,PyQt只是一个wrapper而已
【在 m*****n 的大作中提到】 : 请问你试过python编Gui么? : 感觉PyQt的信号/槽思维方式虽然方便,但是处处和python不兼容啊
|
s********k 发帖数: 6180 | 69 但是asyncio还是难写不少,就是说3.4以上不提倡用thread,还以为GIL解决了。
比如我这个,怎么改写成 async合适
try:
thr = Thread(target=func, args=(func——args,))
thr.daemon = True
thr.start()
except Exception, e:
threadErrors.append([repr(e), current_thread.name]) # append a list
of info
raise # re-raise the exception or use sys.exit(1) to let the thread
die and free resources
【在 d********g 的大作中提到】 : thread和asyncio没啥关系。用thread还是会有GIL问题
|
x****u 发帖数: 44466 | 70 python不合适吧,做ui需要异步方便才行,比如javascript
【在 m*****n 的大作中提到】 : 请问你试过python编Gui么? : 感觉PyQt的信号/槽思维方式虽然方便,但是处处和python不兼容啊
|
|
|
d********g 发帖数: 10550 | 71 这……Win32时代的UI不都这么做的?消息循环就是上古时代的async,这和语言有啥关系
现在的这些asyncio只是说做到语言特性里去了
【在 x****u 的大作中提到】 : python不合适吧,做ui需要异步方便才行,比如javascript
|
d********g 发帖数: 10550 | 72 关键是你具体想要做什么,threads之间有互动吗还是都单独的?
asyncio的基本思路就是把I/O都弄成异步,任何I/O不要阻塞当前loop。Python的
threading因为最后要经过GIL所以还是相当于单线程的,不如直接就asyncio
没什么难写的,写法和sync的差不多,只是记得要await I/O之类的,其实比threading
还更简单。JS也在说要加入async/await语法了
传统处理异步也可以靠架构,用外部的queue。Python这一类用Celery的很多
list
thread
【在 s********k 的大作中提到】 : 但是asyncio还是难写不少,就是说3.4以上不提倡用thread,还以为GIL解决了。 : 比如我这个,怎么改写成 async合适 : try: : thr = Thread(target=func, args=(func——args,)) : thr.daemon = True : thr.start() : except Exception, e: : threadErrors.append([repr(e), current_thread.name]) # append a list : of info : raise # re-raise the exception or use sys.exit(1) to let the thread
|
s********k 发帖数: 6180 | 73 3.4+ PY还是用coroutine和yield这样来写?比如我这个就是简单单独的thread,没有
任何互动,怎么写比较合适?
threading
【在 d********g 的大作中提到】 : 关键是你具体想要做什么,threads之间有互动吗还是都单独的? : asyncio的基本思路就是把I/O都弄成异步,任何I/O不要阻塞当前loop。Python的 : threading因为最后要经过GIL所以还是相当于单线程的,不如直接就asyncio : 没什么难写的,写法和sync的差不多,只是记得要await I/O之类的,其实比threading : 还更简单。JS也在说要加入async/await语法了 : 传统处理异步也可以靠架构,用外部的queue。Python这一类用Celery的很多 : : list : thread
|
c*********e 发帖数: 16335 | 74 facebook, uber, airbnb都是用的php噢。话说,facebook竟然还用了cms.
【在 x***4 的大作中提到】 : 我觉得好找工作就三样:js java python : : 3.
|
d*******r 发帖数: 3299 | 75 uber, airbnb 用 php?
【在 c*********e 的大作中提到】 : facebook, uber, airbnb都是用的php噢。话说,facebook竟然还用了cms.
|
c*********e 发帖数: 16335 | 76 对啊。才知道?
【在 d*******r 的大作中提到】 : uber, airbnb 用 php?
|
x****u 发帖数: 44466 | 77 Win32不是这么做的啊
点个存盘系统死机半天的是从Win16开始代码就没动过的notepad,word的存盘都是异步
的了,点击按钮就把按钮disable掉,然后用MTA的COM组件存盘,完成之后再把窗口关
掉,这样UI在任何时候都有相应
不过写异步的COM基本需要精通COM机制了,所以MS出了些简单的模板和语法糖。
关系
【在 d********g 的大作中提到】 : 这……Win32时代的UI不都这么做的?消息循环就是上古时代的async,这和语言有啥关系 : 现在的这些asyncio只是说做到语言特性里去了
|
a9 发帖数: 21638 | 78 async的最大问题是认为只有I/O是耗时大的,实际上耗时大的还有很多。
threading
【在 d********g 的大作中提到】 : 关键是你具体想要做什么,threads之间有互动吗还是都单独的? : asyncio的基本思路就是把I/O都弄成异步,任何I/O不要阻塞当前loop。Python的 : threading因为最后要经过GIL所以还是相当于单线程的,不如直接就asyncio : 没什么难写的,写法和sync的差不多,只是记得要await I/O之类的,其实比threading : 还更简单。JS也在说要加入async/await语法了 : 传统处理异步也可以靠架构,用外部的queue。Python这一类用Celery的很多 : : list : thread
|
d********g 发帖数: 10550 | 79 那是它自己代码没写好,又不怪语言。本来这都是交给SDK做的,Win里编程最典型一个
要弹一个progress bar同时又要支持响应就不能用modal,因为modal是blocking的。大
多数语言本身最开始都是sync的,要实现async不是在语言层面。JavaScript是个例外
因为最开始它的主要目的就是为了浏览器UI的简单交互
语言层面是说比如C++11加入的async、Python 3加入的yield from、async/await等
PyQt不是在语言层面,就是SDK的事
【在 x****u 的大作中提到】 : Win32不是这么做的啊 : 点个存盘系统死机半天的是从Win16开始代码就没动过的notepad,word的存盘都是异步 : 的了,点击按钮就把按钮disable掉,然后用MTA的COM组件存盘,完成之后再把窗口关 : 掉,这样UI在任何时候都有相应 : 不过写异步的COM基本需要精通COM机制了,所以MS出了些简单的模板和语法糖。 : : 关系
|
x****u 发帖数: 44466 | 80 你不了解来龙去脉啊
为啥过去语言和SDK轻易不搞异步,是因为在30多年历史里抢占式多任务的线程都是昂
贵的,如果app流行开线程线程池会严重影响OS的性能,必须加以限制。
最近多核烂大街了,异步就成了时尚了。
Win32单线程存盘不阻塞UI是不可能的,退一步就算你用了异步IO,把数据编码成文件
格式也会造成延迟。
【在 d********g 的大作中提到】 : 那是它自己代码没写好,又不怪语言。本来这都是交给SDK做的,Win里编程最典型一个 : 要弹一个progress bar同时又要支持响应就不能用modal,因为modal是blocking的。大 : 多数语言本身最开始都是sync的,要实现async不是在语言层面。JavaScript是个例外 : 因为最开始它的主要目的就是为了浏览器UI的简单交互 : 语言层面是说比如C++11加入的async、Python 3加入的yield from、async/await等 : PyQt不是在语言层面,就是SDK的事
|
|
|
d********g 发帖数: 10550 | 81 假设A、B、C三步,B比较耗时
原始sync代码:
1. 干A
2. 干B
3. 干C
3.4 async代码:
@coroutine
def
1. 干A
2. yield from 干B
3. 干C
3.6 async代码:
async def
1. 干A
2. await 干B
3. 干C
async的只是再需要弄一个loop而已。写法基本和sync的兼容,这不比JS那种恶心的写
法好多了吗?
【在 s********k 的大作中提到】 : 3.4+ PY还是用coroutine和yield这样来写?比如我这个就是简单单独的thread,没有 : 任何互动,怎么写比较合适? : : threading
|
d********g 发帖数: 10550 | 82 我说的是你这句话呀:
“python不合适吧,做ui需要异步方便才行,比如javascript”
Win32的UI就不是UI啦?都是C++写出来的,C++那时候不是和Python一样都没有语言支
持的异步吗?JavaScript流行之前我们不都用了那么多年的Windows啦 :)
【在 x****u 的大作中提到】 : 你不了解来龙去脉啊 : 为啥过去语言和SDK轻易不搞异步,是因为在30多年历史里抢占式多任务的线程都是昂 : 贵的,如果app流行开线程线程池会严重影响OS的性能,必须加以限制。 : 最近多核烂大街了,异步就成了时尚了。 : Win32单线程存盘不阻塞UI是不可能的,退一步就算你用了异步IO,把数据编码成文件 : 格式也会造成延迟。
|
d********g 发帖数: 10550 | 83 而且我说了PyQt本来就是个wrapper。Qt本身是C++写的
【在 d********g 的大作中提到】 : 我说的是你这句话呀: : “python不合适吧,做ui需要异步方便才行,比如javascript” : Win32的UI就不是UI啦?都是C++写出来的,C++那时候不是和Python一样都没有语言支 : 持的异步吗?JavaScript流行之前我们不都用了那么多年的Windows啦 :)
|
x****u 发帖数: 44466 | 84 Win32做异步老麻烦了,COM就没几个能写对的
【在 d********g 的大作中提到】 : 我说的是你这句话呀: : “python不合适吧,做ui需要异步方便才行,比如javascript” : Win32的UI就不是UI啦?都是C++写出来的,C++那时候不是和Python一样都没有语言支 : 持的异步吗?JavaScript流行之前我们不都用了那么多年的Windows啦 :)
|
d********g 发帖数: 10550 | 85 肯定不是所有地方都无脑搞async,async一个考虑不周就容易全堵
【在 a9 的大作中提到】 : async的最大问题是认为只有I/O是耗时大的,实际上耗时大的还有很多。 : : threading
|
e****t 发帖数: 17914 | 86 尼玛 不想跳3啊
唉
【在 d********g 的大作中提到】 : 是的。Django这样的大库,接下来1.11 LTS也会是最后一个支持Python 2.7的版本了, : 因为Python 2.7本身到2020年就完全不维护了: : https://pythonclock.org : 整个ecosystem已经在告别2.7,这是没有疑问的
|
m*****n 发帖数: 3575 | 87 那除了 Qt之外,还有没有其它做GUI客户端的可选项?
我需要做网络交互程序,最主要的要求是线程间交互不会互相呛死,在此基础上越易编
写越好
Qt最牛逼之处是只要按照规矩写,永远不会死。做出来的程序比IE之流稳定多了。
【在 d********g 的大作中提到】 : 而且我说了PyQt本来就是个wrapper。Qt本身是C++写的
|
x****u 发帖数: 44466 | 88 IE也有永远不会写死的规矩
最近做跨平台GUI的话,最时髦的方案算是电子了吧
【在 m*****n 的大作中提到】 : 那除了 Qt之外,还有没有其它做GUI客户端的可选项? : 我需要做网络交互程序,最主要的要求是线程间交互不会互相呛死,在此基础上越易编 : 写越好 : Qt最牛逼之处是只要按照规矩写,永远不会死。做出来的程序比IE之流稳定多了。
|
m*****n 发帖数: 3575 | 89 “IE已经停止工作”的这个毛病我在编Qt客户端时从来没遇到过
你说的是electron么?
【在 x****u 的大作中提到】 : IE也有永远不会写死的规矩 : 最近做跨平台GUI的话,最时髦的方案算是电子了吧
|
m*****n 发帖数: 3575 | 90 Postgresql 的 pgAdmin就是用wx体系写的,经常由于任务同时的多了直接挂了。
IE其实也有这个毛病。Windows系的Excel之类,Foxit Reader之类都产生过这种直接死
掉。
Qt体系只要老老实实做QThread,再忙从来不死,绝对稳。我用类似于黑客式的密集消
息做过压力测试。 |
|
|
x****u 发帖数: 44466 | 91 看个人水平了
IE停止工作的错合格码农也不出啊
【在 m*****n 的大作中提到】 : “IE已经停止工作”的这个毛病我在编Qt客户端时从来没遇到过 : 你说的是electron么?
|
x****u 发帖数: 44466 | 92 IE你老实起worker thread会死机么?
【在 m*****n 的大作中提到】 : Postgresql 的 pgAdmin就是用wx体系写的,经常由于任务同时的多了直接挂了。 : IE其实也有这个毛病。Windows系的Excel之类,Foxit Reader之类都产生过这种直接死 : 掉。 : Qt体系只要老老实实做QThread,再忙从来不死,绝对稳。我用类似于黑客式的密集消 : 息做过压力测试。
|
m*****n 发帖数: 3575 | 93 大哥,我说的是微软的IE,有时候看几个网页自己就挂了。这难道不是微软的毛病么?
【在 x****u 的大作中提到】 : IE你老实起worker thread会死机么?
|
x****u 发帖数: 44466 | 94 插件的毛病
【在 m*****n 的大作中提到】 : 大哥,我说的是微软的IE,有时候看几个网页自己就挂了。这难道不是微软的毛病么?
|