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 上不起作用?

SQL Select 语句的用法

Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

jquery中的$的特殊用法

Xcode中的变量模板(variable template)的用法