Ken*_*V99 5 python optimization ctypes mmap bytearray
我正在为XBMC添加一个插件的代码,它将bytearray中提供的图像复制到mmap对象的切片中.使用Kern的行分析器,我的代码中的瓶颈是当我将bytearray复制到适当位置的mmap对象时.在本质上:
length = 1920 * 1080 * 4
mymmap = mmap.mmap(0, length + 11, 'Name', mmap.ACCESS_WRITE)
image = capture.getImage() # This returns a bytearray that is 4*1920*1080 in size
mymmap[11:(11 + length)] = str(image) # This is the bottleneck according to the line profiler
Run Code Online (Sandbox Code Playgroud)
我无法更改图像或mmap的数据类型.XBMC将图像作为bytearray提供,mmap接口由不会更改实现的开发人员设计.然而,它不是用来写入文件的 - 这是他从XBMC和他的C++应用程序中获取数据的方式.我认识到他可以使用可以更好地处理这个问题的ctypes编写一个接口,但他对进一步的开发不感兴趣.XBMC中的python实现是2.7.
我看了自己用memmove使用ctypes(以自包含的方式使用python)的可能性,但是无法弄清楚如何将bytearray和mmap slice转换为可以与memmove一起使用的c结构而不是知道这会更快.有关在这两种数据类型之间移动这些字节的快速方法的建议吗?
归档时间: |
|
查看次数: |
776 次 |
最近记录: |