Why am I getting NotImplementedError with async and await on Windows?(为什么我在Windows上使用异步和等待时未收到ImplementedError?)
问题描述
我有以下代码:
当我在我的Mac上运行Python 3.6.1中的代码时,我得到这样的结果:
但是,当我在Windows上运行相同的脚本时(但是将du
命令替换为在Windows上可以工作的命令),同样在Python 3.6.1上,我得到这样的结果:
这是我在windows上用来发unix命令的替身:
Windows版本信息:
推荐答案
不同的事件循环实现方式不同。其中一些有限制(有时与操作系统相关)。默认情况下,Windows使用SelectorEventLoop,您可以在doc中看到:
SelectorEventLoop有以下限制:
- SelectSelector用于等待套接字事件:支持套接字,最多支持512套接字。
- loop.add_read()和loop.add_write()仅接受套接字句柄(例如,不支持管道文件描述符)。
- 不支持管道,因此未实现loop.connect_read_Pipe()和loop.connect_write_Pipe()方法。
- 不支持子进程,即未实现loop.subprocess_exec()和loop.subprocess_shell()方法。
若要在Windows中运行代码,您可以使用默认情况下可用的备用事件循环-ProactorEventLoop
。
替换行:
使用此选项:
您的代码将正常工作。
这篇关于为什么我在Windows上使用异步和等待时未收到ImplementedError?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!