由买买提看人间百态

topics

全部话题 - 话题: gevent
1 (共1页)
V*********r
发帖数: 666
1
来自主题: Programming版 - Python Concurrency 主流是用啥
民间gevent/greenlet呼声比较高,因为使用简单,但龟叔对gevent意见比较大。龟叔
从2012年年底就开始重新设计event loop APIs(受twisted影响较大)和写一个参考实
现,准备加到py3.4的标准库里,号召twisted/tornado/gevent按他的新标准重写底层
代码。过渡期可能要4-5年。目测最后twisted受益最多,gevent要伤筋动骨或者废掉。
从长远看更看好twisted。
Python去除GIL的尝试基本都失败了,干脆继续锁着。与python在同一个抽象层次的语
言,如ruby/js/php/lua/...,多线程只会更差,或者干脆不支持。
d********g
发帖数: 10550
2
Node的async优势在于原生。从技术来说LinkedIn这个写Python的并不是很全面,
Python做async用Twisted是需要注意如果夹了标准blocking的库,不做优化的话async
还是会被blocking的库搞得效果大打折扣。不过看样子他们对Python async并没有太多
研究毕竟不是专业做Python的,我在这里补充一下好了,一般是这么几个方案搞:
1. 用Twisted的话,配合Redis,blocking的标准库部分放进queue里去实现异步
2. 用Tornado的话,除了有自带的async HTTP client之类,还有自带的gen(
generator)可以实现挂起、恢复来实现对blocking库的async化,但是这个方案也有缺
点就是无法嵌套,所以也有配合Redis的,目的是用solution弥补原生不足
3. 用gevent的话,monkey.patch_xxx就是用来patch标准库使其blocking变non-
blocking的,有点magic的味道。gevent能够做协程(coroutine,Tornado的generator
也... 阅读全帖
d******e
发帖数: 2265
3
python web framework多类去类。例如, pin家用gevent. 否则就的恶心的写node.js
了。gevent实现则不要太直观。 python其实类似java.虽然本质很烂,架不住
community大,用户多。
东西应有尽有。

Rails
d*******r
发帖数: 3299
4
来自主题: Programming版 - 关于 Python DevOps 的几个问题
果然大家不用 Python multithreading啊?Python multithreading 到底有推荐使用的
scenario 没......?
gevent 是要比 twisted 好很多吧?twisted 我记得很老了。gevent VS twisted 大牛
什么意见?
d********g
发帖数: 10550
5
async web server的话vert.x看着像JVM系对抗Node的救星,我感觉和Tornado的定位(
侧重web)有点像。但Twisted/gevent这样更generic的async库不是单纯的web,比如
Twisted我们和Redis连用做RPC的async,gevent是放到嵌入式里做Python的async。
Tornado自己可以做点小的项目玩玩不错
k****0
发帖数: 7
6
来自主题: Programming版 - 请教python高手异步编程的问题
use asyncio (python 3) or trollius (python 2)
call requests using loop.run_in_executor(None, requests.post, ....), which
returns a promise so it is not blocking.
Alternatively you can use grequest (basically requests+gevents), but gevents
will monkey patch all the network modules to make it non-blocking, which
sometimes breaks stuff.
m*****n
发帖数: 3575
7
来自主题: Military版 - 感觉python的前途堪忧
不太了解你所说的范畴
但是Python自身的能力是有限的
Python靠扩展包(加盟商)来弥补劣势
在网络方面有Twisted,在线程方面有最高级的gevent的协程包
这是Python的一个特色吧——天子只是立个规矩,诸侯挑大梁
d********g
发帖数: 10550
8
Python在做built-in的async支持,一时半会儿还好不了。现在通用一点的就twisted和
gevent吧,但是twisted的历史负担比较重。tornado不是通用的async库,我也没做过
c******M
发帖数: 10
9
没有人关注么?我自己顶一下。
我觉得python最难学的就是那个什么 co-routine。gevent library用法很hacky。还不
是对所有的library都有用。
欢迎大家拍砖。
L***s
发帖数: 1148
10
object models, metaclass, decorators, enhanced generators / coroutines
threading models, GIL, asyncio & alternative async libs like gevent/twisted
writing C/C++ extensions
writing 2/3 compatible Python code
(for web developers) familiar with django, flask, twisted or tornado
implementation of dict, OrderedDict, deque, etc. in CPython & implications
memory management & fragmentation prevention in CPython
PVM internals and optimization, opcodes and AST hacking
alternative implementations like PyPy... 阅读全帖
s********k
发帖数: 6180
11
来自主题: Programming版 - 为啥大家都比较python的web framework呢
我们大量用python,基本不用web,最多到Twisted 做TCP,大量用coroutines做异步处
理,Gevent之类. 我自己基本就是C + python. C做网络,python做大量外围和异步工作
所以每次看到比较ruby我都一头雾水,没人比较python在其他方面的优劣?很多网络公
司(不是web公司),比如做switch, router之类也大量用python。高人来比较下这方
s********k
发帖数: 6180
12
来自主题: Programming版 - 为啥大家都比较python的web framework呢
thanks, we will use C in embedded side, since it is much matured technology
than python on embedded side. our embedded networks are connected to server
and then data center, for which python the real player since we can leverage
twisted/Gevent to handle a lot of none blocking issues.
I will take a look at your recommended link

it
s********k
发帖数: 6180
13
来自主题: Programming版 - Anyone attended Pycon 2013 last week?
any interesting topic to share here? I heard rumor said Guido put most of
his time on some asynchronous framework on python to replace Gevent/twisted?
s********k
发帖数: 6180
14
wireless network + back end system.
wireless 部分用C,embedded RTOS,这些都是专有工具,比如IAR,Greenhill。
backend两部分,一个是local server。一个是cloud。都用python, local的server是
python+sqlite+SQLalchemy,还有自己实现的类似gevent的coroutine库,主要是和
wireless network做interface。
cloud端是python+postgresql+bottle/ZOPE,还有大量私有库,包括自己蛋疼实现的
DBcache,类似memacached.
主要用pycharm开发,当然工作不是我一个人做的.项目管理用开源的TRAC自带代码管理
,进度管理,wiki,ticket tracker。代码是SVN,准备引入git。
d********g
发帖数: 10550
15
来自主题: Programming版 - Python就是爽
你一个连Win32和C++开发都没做过的也好意思谈UI和多线程,话是不是说得有点大了?
要比性能,你拿Java出来我只能感到非常遗憾。UI还真没Java什么事,原生UI就不喷了
,跨平台的,反倒是C/C++和Python组合比较多,比如Qt和PyQt。多线程我说了Java也
就只能瞎喷一下Python,Python都去用Twisted了
游戏你说的哪一种?这topic实在大,如果你说的是网游,Java最多只能胜任网游、手
机游戏的后端,这个不要说我喷你,那么出名的playhaven,招的就是一水的Python码
工,他们用gevent做后端。不要说你公司游戏能做过playhaven,吹也要有个限度,单
机开发的DirectX我没做过但根本就没Java啥事,跨平台的话你在我这吭哧吭哧写过好
几年OpenGL代码的人面前说啥游戏开发呢对不对,这OpenGL编程出了名的比C还恶心。
OpenGL的UI我都是要么C++要么Python
Python的业界产品你不知道?Celery这么出名的队列系统,做过“大系统”的人都应该
知道吧。Facebook开源发布的Tornado,是不是又把你脸打了,... 阅读全帖
d********g
发帖数: 10550
16
来自主题: Programming版 - Python就是爽
你一个连Win32和C++开发都没做过的也好意思谈UI和多线程,话是不是说得有点大了?
要比性能,你拿Java出来我只能感到非常遗憾。UI还真没Java什么事,原生UI就不喷了
,跨平台的,反倒是C/C++和Python组合比较多,比如Qt和PyQt。多线程我说了Java也
就只能瞎喷一下Python,Python都去用Twisted了
游戏你说的哪一种?这topic实在大,如果你说的是网游,Java最多只能胜任网游、手
机游戏的后端,这个不要说我喷你,那么出名的playhaven,招的就是一水的Python码
工,他们用gevent做后端。不要说你公司游戏能做过playhaven,吹也要有个限度,单
机开发的DirectX我没做过但根本就没Java啥事,跨平台的话你在我这吭哧吭哧写过好
几年OpenGL代码的人面前说啥游戏开发呢对不对,这OpenGL编程出了名的比C还恶心。
OpenGL的UI我都是要么C++要么Python
Python的业界产品你不知道?Celery这么出名的队列系统,做过“大系统”的人都应该
知道吧。Facebook开源发布的Tornado,是不是又把你脸打了,... 阅读全帖
d********g
发帖数: 10550
17
twisted和gevent都用

js
d********g
发帖数: 10550
18
来自主题: Programming版 - 这次node把python也给干了
昨天还真没看到。二爷最近吃了火药了尽挖坑?Django没错啊,RoR和Django是server
side MVC的经典,现在是client side MVC + server REST,Node.js和他们不冲突
Python的我早说了eco system大很多,web只是冰山一角,还要说一万遍?JS的social
类SPA可以套Node.js后端来抗高并发比如我提到那个open source项目,稍微复杂一点
而且transaction要求高的,Node.js也只是个壳,后面得Python/Java这么用
async的Python库一坨一坨的,Twisted/Facebook Tornado/gevent随便选。3.x里也在
讨论加入原生支持,当然这个八字还只有一撇暂且不说。不可否认JS全套很有吸引力,
但是目前JS还做不了真的全套
d********g
发帖数: 10550
19
来自主题: Programming版 - 这次node把python也给干了
Node是比较适合做抗高并发因为语言特性。但你不知道手游公司用gevent和Python
stack的也很多吗?又随手一搜:
https://www.linkedin.com/jobs2/view/6693137
d********g
发帖数: 10550
20
来自主题: Programming版 - 以后Web就是Node的天下了
你是不太清楚。指点一下吧:
PHP/Ruby/Python/JS
Twisted (gevent, Tornado)/Node
Zend/Rails/Django/Express
这么比是可以的
Node干语言的话,包括Java在内的除了JS岂不是所有语言都被干翻?
d********g
发帖数: 10550
21
来自主题: Programming版 - 关于 Python DevOps 的几个问题
Python daemon也是可以的,如果你要更modular的话。multithreading一般不用,很多
是用twisted或者gevent。另外redis配合一些lib也可以用来做scheduler

memory
some
m**k
发帖数: 290
22
来自主题: Programming版 - 关于 Python DevOps 的几个问题
python threading 虽然有GIL的问题,还是可以放心使用的。
不推荐twisted或者gevent,太复杂了。
d*******r
发帖数: 3299
23
来自主题: Programming版 - 关于 Python DevOps 的几个问题
我看 gevent 好像用着挺简洁的, 而且刚刚出了1.0, 很想用用
d*******r
发帖数: 3299
24
来自主题: Programming版 - 关于 Python DevOps 的几个问题

你是指开一个python process来代替cron管理各个复杂的periodic job吧, 我是这么想
的.
我每个 periodic job 的周期和要管理的事情都不太一样, 写在一个thread貌似很乱.
我又不准备自己实现单 thread 的 event-driven framework. 所以我准备针对每一个
periodic job 开一个 python thread 或者 gevent coroutine.
我现在就是每个 AWS EC2 instance 上开一个metric collecting process,
periodically 搜集一些 metrics, 然后 push 到 Librato server 上看图. 我们现在
不存这些 metrics, 就运维时候实时看看, 所以还比较简单.
m**k
发帖数: 290
25
来自主题: Programming版 - 关于 Python DevOps 的几个问题

gevent 的核心是 greenlet。greenlet 是一个 hack,需要操作 cpython的stack,所
以我不是很喜欢。
Guido好像要推出一个新的event framework,不知道怎么样了。
d*******r
发帖数: 3299
26
来自主题: Programming版 - Python Concurrency 主流是用啥
Python Concurrency 主流是用啥?
自带的 multi-threading with GIL
自带的 multi-process
gevent 这种 coroutine-based
或者,其他 ... ?
迷惑中...
看来还是 Node 方便,只有 multi-process 这个选择
d*******r
发帖数: 3299
27
来自主题: Programming版 - Python Concurrency 主流是用啥
很有信息量,多谢指点
可否给出 龟叔对gevent意见,和他长在开发的新 event loop APIs 的连接.
d*******r
发帖数: 3299
28
来自主题: Programming版 - Python Concurrency 主流是用啥
主流的意思就是用的人多,文档多,sample code多,
相关问题的 posts 好找,最好前景还好,我觉得还是很重要的。
当然,又主流,用起来又简单可靠是最好的。
本来想用 gevent,但是经常看到人吐糟说老大不喜欢,前景不好。。。
d******e
发帖数: 2265
29
来自主题: Programming版 - Python Concurrency 主流是用啥
I like. gevent. coroutine. is cool
s********k
发帖数: 6180
30
来自主题: Programming版 - Python Concurrency 主流是用啥
python还是做不好那种CPU bound的Concurrency, 如果只是IO bound的gevent和
twisted都不错,或者可以自己实现一个coroutine的简单架构,我原来做过一个
coroutine的自己轮子,很方面。
关于GIL的问题参见david beasley的PPT,讲得很好
d*******r
发帖数: 3299
31
来自主题: Programming版 - 这次node把python也给干了
http://dabeaz.com/coroutines/
http://www.dabeaz.com/coroutines/Coroutines.pdf
2009年的,不知道现在最新的玩法有变化没,我准备回头用的时候再自习琢磨。
主要好处是 generator/yield 都是 python 自带的 (类似的方法可能还能在 Node.js
上玩),不像 gevent 那样遭guido老大嫌弃,也不像 Twisted 那么复杂.
a***n
发帖数: 538
32

python可以用gevent, greenlet, stackless。
有钱的话就直接多进程。
d*******r
发帖数: 3299
33
来自主题: Programming版 - damn, love vert.x
今天躺床上看这个东西 http://www.youtube.com/watch?v=8ClYUo_A3h0
本来想睡午觉的,尼玛看着看着就精神起来了,确实牛B啊。
他是每个thread里有eventloop做异步的东西,让你不用关心locks,
multithreading, distributed multiprocessing 都给你做好了。
你就写些 functions 和 messages 就干完事情了。而且 tcp/udp/http 啥的,都可以
用。
看了下例子,非常简洁!而且为了你还能使用一些阻塞的模块,给你了一个可以放在后
台运行的 backgroud threading的东西。真是够贴心的!
之前一直在纠结 python 的 gevent/twisted/tornado/generator 啥的... 要不干脆上
这个试试。
非常感谢!你推介这个确实是好东西!
就是现在 community 大不大? 我比较恶俗,不想搞小众的东西,因为那样没人帮你排
雷,没人讨论问题。
我看了 wikipedia,是 2011 年出来的。还比较新。
总之,这个要是能变成一个流行的 l... 阅读全帖
f******2
发帖数: 2455
34
来自主题: Programming版 - vert.x vs tornado? : to mr.zhao
Are they at the same level ?
if node.js is impacted by vert.x, what would happen
to things like tornado, twist, gevent?
//bow
d********g
发帖数: 10550
35
来自主题: Programming版 - Guido on Python AsyncIO (1/23/2014)
Tulip会设计成一个灵活的库,还能够兼容Twisted和gevent(比如替换内置的event
loop这块)
另外2.x没事,有back port,不用yield from而是yield和raise结合。细节没仔细听
p**o
发帖数: 3409
36
来自主题: Programming版 - Guido on Python AsyncIO (1/23/2014)
Here is a good tutorial of using asyncio / Tulip in Python 3.4
Fast scraping in python with asyncio
http://compiletoi.net/fast-scraping-in-python-with-asyncio.html
PS: Glyph(& perhaps also Guido)'s opinion on different async models:
straight callbacks (Twisted IProtocol),
managed callbacks (Twisted Deferred),
explicit coroutines (Tulip / yield from: the one to be standardized),
implicit coroutines (eventlet, gevent)
They really strongly oppose any implicit monkey-pactch/hack
https://glyph.twiste... 阅读全帖
d*******r
发帖数: 3299
37
来自主题: Programming版 - 受不了python了
本菜觉得 Python 就是用来代替 Bash, Perl 来做 system admin 和 科学计算,都有
很多可用的地方。
你看看最近学校开课,很多都是用 Python 了,比如 coursera 上的课,Python 真是
一堆堆的。
Python 比 Ruby 形势好太多了。用起来弱智,就是王道。
不过大并发, high perf 的分布式系统,Python确实不咋地,
之前琢磨了半天,看了 gevent, tornado 什么的,
发觉完全不如 Node.js, Vert.x 之类。
d*******r
发帖数: 3299
38
来自主题: Programming版 - 再问几个Node.js的问题
一起整呀, 现在还有 Nodyn.io, 一点都不冲突呀,
不过我不准备在 JVM 上整 python/groovy 了,直接用 JS 了
最近要写一个简单的 RESTful service,
python 的 tornado/gevent 都不太喜欢, 所以决定上 node 了
d******e
发帖数: 2265
39
来自主题: Programming版 - 请教python高手异步编程的问题
gevent

False);
率。
requests
d********g
发帖数: 10550
40
来自主题: Programming版 - 请教python高手异步编程的问题
gevent,或者简单点tornado:
http://www.tornadoweb.org/en/stable/gen.html

False);
率。
requests
n****l
发帖数: 3375
41
来自主题: Programming版 - 用python写多线程。刘姥姥都笑了
ROR如何异步?
另外python有pypy,pypy下也有gevent
n****l
发帖数: 3375
42
来自主题: Programming版 - 用python写多线程。刘姥姥都笑了
你这三两句话句句是槽点啊
第一,你刚才信口雌黄, 说tornado效率比ror还低,这里回复的时候又跟django比,
这是在转移话题吧?
第二,django可以用一句话gevent优化,并发效果马上就会有很大的提升,ror如何做
这种简单的一句话优化?
第三,你除了用过django和tornado还用过什么python框架,flask用过没,bottle用过
没。
第四,用eventmachine的话写法会很恶心,ruby还有很多其他异步框架,如果非要用
eventmachine那还不如直接用node.js
第五,麻烦你信口雌黄之前先看看框架benchmark排名 http://www.techempower.com/benchmarks/
ruby社区喊ruby off rails不是一天两天了
ror写东西固然快,但是ror运行效率实在太慢,也没有一个好的并发解决方案,都是吃
北欧大牛的老本。
h*****y
发帖数: 298
43
来自主题: Programming版 - 求推荐python based framework
tornado or flask + Gevent
d*******r
发帖数: 3299
44
来自主题: Programming版 - 求推荐python based framework
tornado,
我估计是不需要和 Flask, Gevent 一起用的
w****k
发帖数: 6244
45
来自主题: Programming版 - 求推荐python based framework
加gevent做异步
性能基本不会太差
和node都可以比拼了
x*****z
发帖数: 787
46
为什么我认为 Python 3 没有前途?

py2 发展了很多年,现在是一个非常成熟的状态。基本上所有的特性都已经被开拓得差
不多了。所以现在 PyPI 上提供的各种库和及命令行工具,IPython、Requests、
gevent、django 等等……基本可以认为是现有 python 语法和虚拟机下能做到的巅峰
水准。

换句话说,在不引入新的语法工具的情况下,python universe 的战斗力不会再有实质
性的提升了。(语法工具的例子比如jit、goroutine、static analysis 等等)

py3 并没有引入新的生产工具,反而人为地破坏了现有生态圈的兼容性,导致了长达数
年的时间 python universe 没有任何的进步。而在 python 停滞的这段时间,很多其
他编程语言也在进化,都没有闲着。

作为胶水语言,python 或许曾经拥有了地球上最强的生产力,但这个地位能维持多久
呢?Ruby 或者 Scala 甚至 CoffeeScript 都具备和 Python 实现一样编程接口的能力
,同时又有自己独到的工具可以实现 Python 做... 阅读全帖
d******e
发帖数: 2265
47
在python3上用gevent多年requests一直没有问题最后一个短板是nltk现在也解决了
如果拒绝自动的处理Unicode,asyncio yield from enum那么可以停在Python 2上没问题
d******e
发帖数: 2265
48
来自主题: Programming版 - scala的基于future并行async程序怎么写
看了一下go,感觉就是python的gevent或者其他coroutine方法。本质上,generator/
coroutine也可以组成数据处理的 pipeline.而且比scala的函数风格好读多了。python
的问题是不稳定。量上去👮会各种网络错误,总是要加retry.
简单倒是简单。不知道轮子足够多。第二还得花时间学啊。
另外,异步操作的combination怎么做?需要每次都join一下嘛?
d******e
发帖数: 2265
49
来自主题: Programming版 - 如何快速处理大量网上xml文件?
简单的python gevent.
复杂点scrapy(这戈软件实际很傻逼,典型的拿着oo硬套的作品)
后来,我自己写了个python batch和 scala batch的framework.
加了一些retry和throttling的东西。
d*******r
发帖数: 3299
50
Python 不用 multi-threading ...
Python 2 用 tornado, gevent 之类
Python 3 用 async io
1 (共1页)