我的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的书籍,但我不知道是否可以在 DispatchWithEvents
中使用函数(不是类),或者在这种情况下是否可以采用Asyncio .