
将
NotImplementedError引发异常,因为连接管协程不被支持
SelectorEventLoop,这是默认的事件循环集
asyncio。您需要使用
ProactorEventLoopWindows支持Windows上的管道。但是,它仍然不起作用,因为在Windows中,
connect_read_pipeand
connect_write_pipe函数显然不支持Python
3.5.1中的
stdin/
stdout/
stderr或文件。
一种
stdin使用异步行为进行读取的
run_in_executor方法是将线程与循环的方法一起使用。这是一个简单的示例供参考:
import asyncioimport sysasync def aio_readline(loop): while True: line = await loop.run_in_executor(None, sys.stdin.readline) print('Got line:', line, end='')loop = asyncio.get_event_loop()loop.run_until_complete(aio_readline(loop))loop.close()在示例中
sys.stdin.readline(),该
loop.run_in_executor方法在另一个线程内调用该函数。线程将保持阻塞状态,直到
stdin收到换行符为止,与此同时,循环可以自由执行其他协程(如果存在)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)