码迷,mamicode.com
首页 > 编程语言 > 详细

python学习笔记(2)

时间:2016-02-07 02:15:05      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

[异步IO]

对于IO操作阻塞,可以使用多线程/多进程,然而线程/进程数有限,切换开销大,效率低。

同步IO不好解决,可以用异步IO:IO操作时,发出IO指令,然后就去处理其他代码,一段时间后再返回。这样,一个线程可以同时处理多个IO且不用等待,对于IO密集(如WEB服务器)很适合。

 

[协程 Coroutine]

又称作微线程。可以在一个子程序中中断,去执行其他子程序。而且协程中不用锁机制,效率高。

于是获得最高效率就是:多进程+协程。充分利用多核。

 

[asyncio]

Python3.4的标准库,直接支持异步IO

asyncio编程模型就是消息循环,从模块中获取一个EventLoop的引用,把需要执行的协程扔到其中去执行,就实现了异步IO。

import asyncio

@asyncio.coroutine
def hello():
    print(hello world!)
    r=yield from asyncio.sleep(1)
    print(hello again!)

loop=asyncio.get_event_loop()
loop.run_until_complete(hello())
loop.close()

用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutin类型,然后在coroutine内部用yield from调用另一个coroutine实现异步操作。

 

python学习笔记(2)

标签:

原文地址:http://www.cnblogs.com/IvanSSSS/p/5184434.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!