我正试图加快struct.pack()
的速度,感觉好像在从Python对象中获取原始值的行为中缺少一些基本知识。
假设我编写了最快的C / cython模块,该模块采用Python整数列表-
[1,14,78,-789... ]
并将它们打包到缓冲区中。然后,假设我分别通过ctypes / cython在Python中使用它。
我仍然必须将Python列表传递给C模块,所以在那里,Python已经以其原始格式提供了实际的整数,每个整数4个字节。
因此,当这些int“命中” C模块时,我已经做了我要做的事情,只是手头没有它。
该转换发生在哪里?我可以以某种方式从纯Python插入该过程吗?我知道to_bytes()
,但它比struct.pack()
还要慢,所以不可能那样。