可以在Python中使用带有win32com的Asyncio吗?

时间:2018-05-28 11:07:41

标签: python python-asyncio pywin32

我的python程序通过Windows COM对象接收数据将其记录到hdf5文件中。为了使用COM对象,我使用了win32com.client.DispatchWithEvents。下面的代码显示了我的程序的简化结构。

class Handler_realTime(object):  
    def __init__(self):
        pass

    def OnReceiveRealData(self, eventTime, eventData01, eventData02, eventData03):
        m.target_table.append( np.array([( eventTime, eventData01, eventData02, eventData03 )] )
        m.file.flush()        # <--- being delayed due to IO processing!



class MainClass(object):
    def __init__(self):
        self.file = tb.open_file('hdf5File.h5', 'a')
        self.target_table = self.file.root.realTime

        self.realReceving = win32com.client.DispatchWithEvents("Session.RealTime",Handler_realTime)
        # calls Handler_realTime whenever new data arrives

m = MainClass()

它工作正常,但我最近感觉到程序的低性能,因为它频繁flush()和过多的调用。然后,我认为Asyncio可以通过随机刷新文件并同时处理其他任务来提高性能。

我在Python中查找了一些关于Asyncio的书籍,但我找不到任何使用类而不是函数(async def)的示例。换句话说,我不知道是否可以使用DispatchWithEvents的函数(而不是类),或者在这种情况下是否可以采用Asyncio。

0 个答案:

没有答案