Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PyCon2014China-Zhuhai-bpm.py
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Zoom.Quiet
November 17, 2014
Technology
0
130
PyCon2014China-Zhuhai-bpm.py
141115 in Zhuhai
http://zoomq.qiniudn.com/CPyUG/PyCon2014China/141115zh-pm1-bpm.py.MP3
Zoom.Quiet
November 17, 2014
Tweet
Share
More Decks by Zoom.Quiet
See All by Zoom.Quiet
PyCon2014China-Zhuhai-high performance
zoomquiet
0
180
PyCon2014China-Zhuhai-meta programming
zoomquiet
1
160
PyCon2014China-Zhuhai-luna kv db
zoomquiet
0
110
PyCon2014China-Zhuhai-seed studio
zoomquiet
0
120
PyCon2014China-Zhuhai-Docker Registry Build By Python
zoomquiet
0
150
PyCon2014China-Zhuhai-jeff
zoomquiet
0
110
PyCon2014China-Zhuhai-pythonic front-end
zoomquiet
0
150
DevFest2014-Zhuhai-Polymer
zoomquiet
0
440
TEDxJLUZH MOMENT future
zoomquiet
0
400
Other Decks in Technology
See All in Technology
開発組織の課題解決を加速するための権限委譲 -する側、される側としての向き合い方-
daitasu
5
270
Agentic Software Modernization - Back to the Roots (Zürich Agentic Coding and Architectures, März 2026)
feststelltaste
1
180
Kaggleで鍛えたスキルの実務での活かし方 競技とプロダクト開発のリアル
recruitengineers
PRO
1
170
Ultra Ethernet (UEC) v1.0 仕様概説
markunet
3
210
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.6k
技術的負債の泥沼から組織を救う3つの転換点
nwiizo
8
2.7k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.1k
プロジェクトマネジメントをチームに宿す -ゼロからはじめるチームプロジェクトマネジメントは活動1年未満のチームの教科書です- / 20260304 Shigeki Morizane
shift_evolve
PRO
1
120
男(監査)はつらいよ - Policy as CodeからAIエージェントへ
ken5scal
5
750
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
1
1.1k
Startups on Rails: 2026 at RubyConf Thailand
irinanazarova
0
140
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
1.6k
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
Into the Great Unknown - MozCon
thekraken
40
2.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4k
Amusing Abliteration
ianozsvald
0
120
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
280
Chasing Engaging Ingredients in Design
codingconduct
0
130
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
260
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
140
GitHub's CSS Performance
jonrohan
1032
470k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
270
Transcript
None
芯雲流程引擎 使用Python协程解决阻塞问题
[email protected]
Service Orchestration DNS 系统 接入层 系统 告警 系统 配置管理 系统
Game Server SA 系统 IaaS 系统 官网 系统
Python with @task
阻塞问题 result = call_func() result 无法立即获得,所谓“阻塞”
I/O 阻塞 bytes = tcp_socket.recv(4096) 网络I/O操作需要时间,所谓“I/O 阻塞”
例子 连接 发送 接收
回调 def on_received(bytes): ….. def on_sent(sock): sock.recv(on_received) def on_connect(sock): sock.send(‘xxx’,
on_sent) connect(‘a.b.c.d’, on_connect) 上下文
CALLBACK HELL
Logic Locality 最小化开发人员阅读流程代码的眼球移动距离
协程可以表达I/O阻塞 def some_process(): sock = connect(‘a.b.c.d’, on_connect) sock.send(‘xxx’) bytes =
sock.recv(on_received) …. 上下文 locals()
流程阻塞 ip = res.request_new_server(model=’B6’) 调用“外部系统”需要时间,所谓“流程阻塞”
流程阻塞 yes_no = smcs.wechat_approve(‘reboot?’) 人工审批需要时间,所谓“流程阻塞”
协程也可以表达流程阻塞 def some_process(): ip = res.request_new_server(model=’B6’) yes_no = smcs.wechat_approve(‘deploy %s?’
% ip) if yes_no: ijobs.exec_job(‘deploy’, ip)
流程引擎 申请机器 部署 修改DNS 引擎 流程
各式Event Loop 连接 发送 接收 event loop 协程 gevent tulip
/ asyncio tornado evergreen eventlet
所谓Event Loop def some_process(): sock = connect(‘a.b.c.d’, on_connect) sock.send(‘xxx’) bytes
= sock.recv(on_received) …. 协程 Event Loop fd_map = {} [fd, read] => coroutine 操作系统 select kqueue epoll recv好了告诉我, 我先睡你那了 select(sock, EV_READ) fd 132 可读了 fd 132 对应的协程醒醒 开读了
协程可以存数据库的 def some_process(): ip = res.request_new_server(model=’B6’) yes_no = smcs.wechat_approve(‘deploy %s?’
% ip) if yes_no: ijobs.exec_job(‘deploy’, ip) 协程 引擎 event_map = {} event => coroutine 外部系统 审批好了告诉我, 我先睡你那了 wechat approve 审批结果有了 审批好了,协程醒醒 开工了 mysql import cPickle bytes = cPickle.dumps(coroutine)
Python协程实现 • yield • stackless python / pypy • greenlet
/ python-fibers / stacklet / libgevent
Ultimate Coroutine Scheduler • 语言:Java for true parallelism • 协程:co-routine
with bytecode weaver • I/O阻塞:包装NIO • 流程阻塞:event map,持久化可选 https://github.com/taowen/daili
协程大法好 招聘:
[email protected]