我的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。