python:协程
1,如何实现在两个函数之间的切换?
(3
=(2(4
2,协程 greenlet greenlet
(5(<span style="color: #0000ff">def<span style="color: #000000"> eat2():
<span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">吃饺子1<span style="color: #800000">'<span style="color: #000000">) g1.switch() time.sleep(3<span style="color: #000000">) <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">白切鸡<span style="color: #800000">'<span style="color: #000000">) g1 =<span style="color: #000000"> greenlet(eat1)g2 =<span style="color: #000000"> greenlet(eat2) g1.switch() 3,gevent gevent time
gevent
threading (1231(456<span style="color: #0000ff">def<span style="color: #000000"> func2():
<span style="color: #0000ff">print(current_thread().name) <span style="color: #008000">#<span style="color: #008000"> dummythread <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">hahaha<span style="color: #800000">'<span style="color: #000000">) time.sleep(1<span style="color: #000000">) <span style="color: #0000ff">print(<span style="color: #800000">'<span style="color: #800000">10jq<span style="color: #800000">'<span style="color: #000000">) g1 = gevent.spawn(func1) <span style="color: #008000">#<span style="color: #008000"> 遇见他认识的io会自动切换的模块g2 =<span style="color: #000000"> gevent.spawn(func2) gevent.joinall([g1,g2]) 4,效率对比 gevent time
gevent
<span style="color: #0000ff">def <span style="color: #000000"> task(args):time.sleep(1<span style="color: #000000">) <span style="color: #0000ff">print<span style="color: #000000">(args) <span style="color: #0000ff">def sync_func(): <span style="color: #008000">#<span style="color: #008000"> 同步 <span style="color: #0000ff">for i <span style="color: #0000ff">in range(10<span style="color: #000000">): task(i) <span style="color: #0000ff">def async_func(): <span style="color: #008000">#<span style="color: #008000"> 异步 start =<span style="color: #000000"> time.time() start =<span style="color: #000000"> time.time() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |