Python编程
使用cantools库,读取dbc后,批量解析,200万行的 报文blf和asc,并把解析结果:时间戳,信号名称,物理值,写入dataframe中。
常规解法,遍历 每行报文,进行decode,效率太低 ,时间太长。
大家可以试试 pypy,Numba,多进程等解法,目前无解。
不知道你这个问题是否已经解决, 如果还没有解决的话:我认为使用pypy、Numba或者多进程都可以试一试,以下是我的具体建议:
使用pypy运行Python代码,它是一种不同于CPython的解释器,在某些情况下可以提升Python的运行速度。将代码中的Python库替换为支持pypy的库(例如,cffi替代ctypes),以便获得更好的性能。注意,pypy并非适用于所有Python代码,因此可能需要对你的代码进行修改。
使用Numba对slow loop进行优化,Numba是一种静态编译器,它将Python代码转换为高效的机器码。在循环中使用jit(just in time)装饰器,可以加快执行速度。例如:
import numba as nb
@nb.jit
def decode_message(data):
# 假设这个函数是遍历每行报文进行解码的函数
pass
除此之外,可以考虑以下几点来进一步优化效率: