可以扩展asyncio来监视使用pywin32创建的句柄

时间:2016-01-27 18:39:06

标签: python python-3.x python-asyncio

我有一个Windows Python(3.4.x)程序,我希望等待来自queuing.Queue和文件系统更改通知(Win32 FindFirstChangeNotification等)的用户操作。我目前的计划是将Win32事件对象(使用CreateEvent创建)与队列相关联,并且当操作排队时,发出事件对象的信号。然后该线程将在Win32 WaitForMultipleObjects调用上循环并调度事件。我会使用pywin32来调用Win32 API。

我在不同的项目上采用这种方法,它工作正常。但是,我想知道是否有任何方法可以在asyncio模块之上实现此行为。

1 个答案:

答案 0 :(得分:0)

使用pywin32扩展,可以使用win32event API等待Windows事件。然而,等待是阻止操作。

在pywin32事件等待直接支持asyncio之前,asyncio可以使用所谓的thread pool executor等待事件,这基本上只是在一个单独的线程中运行阻塞等待。还有一个进程执行器将阻塞操作委托给进程而不是线程。