python3.4的asyncio用法
Posted 月下柳梢映
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3.4的asyncio用法相关的知识,希望对你有一定的参考价值。
关于异步IO,在Python3.4中可以使用asyncio标准库。该标准库支持一个时间循环模型(EventLoop),我们声明协程,然后将其加入到EventLoop中,即可实现异步IO。
Python中也有一个关于异步IO的很经典的HelloWorld程序(同样参考于廖雪峰教程):
1 # 异步IO例子:适配Python3.4,使用asyncio库 2 @asyncio.coroutine 3 def hello(index): # 通过装饰器asyncio.coroutine定义协程 4 print(‘Hello world! index=%s, thread=%s‘ % (index, threading.currentThread())) 5 yield from asyncio.sleep(1) # 模拟IO任务 6 print(‘Hello again! index=%s, thread=%s‘ % (index, threading.currentThread())) 7 8 loop = asyncio.get_event_loop() # 得到一个事件循环模型 9 tasks = [hello(1), hello(2)] # 初始化任务列表 10 loop.run_until_complete(asyncio.wait(tasks)) # 执行任务 11 loop.close() # 关闭事件循环列表
同样这里的代码添加了注释,并增加了index参数。输出currentThread的目的是演示当前程序都是在一个线程中执行的。返回结果如下:
Hello world! index=1, thread=<_MainThread(MainThread, started 14816)>
Hello world! index=2, thread=<_MainThread(MainThread, started 14816)>
Hello again! index=1, thread=<_MainThread(MainThread, started 14816)>
Hello again! index=2, thread=<_MainThread(MainThread, started 14816)>
以上是关于python3.4的asyncio用法的主要内容,如果未能解决你的问题,请参考以下文章
python-geoip 在 python3.4 上不起作用?
Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段