找到所有的设备()在异步协同程序中

2024-06-09 10:38:48 发布

您现在位置:Python中文网/ 问答频道 /正文

为了访问计算机上连接的usbhid设备,我使用pywinusb包中的find_all_hid_devices()函数。在

现在我想从异步协同程序访问这个HID设备。使用以下代码

@asyncio.coroutine
def main():
    from pywinusb import hid
    a = hid.find_all_hid_devices()

返回以下错误:

^{pr2}$

但是,对hid.find_all_hid_devices()的相同调用是独立的,在没有asyncio的普通main中。在

这是因为我试图在一个协同程序中访问?实现这一目标的正确方法是什么?在


Tags: 函数代码asynciomaindef计算机allfind
1条回答
网友
1楼 · 发布于 2024-06-09 10:38:48

pywinusb库在设计上是同步的,因此您应该在线程池中调用它。在

@asyncio.coroutine
def f():
    loop = asyncio.get_event_loop()
    a = yield from loop.run_in_executor(None, hid.find_all_hid_devices)

从技术上讲,从协同程序进行同步调用是允许的,但不鼓励这样做,因为它会长时间暂停事件循环。在

相关问题 更多 >