快速字符串到数组复制python

快速字符串到数组复制python,python,arrays,bitmap,Python,Arrays,Bitmap,我希望将图像数据切割成规则大小的屏幕块。目前我使用的方法是: def getScreenBlocksFastNew(bmpstr): pixelData = array.array('c') step = imgWidth * 4 pixelCoord = (blockY * blockSizeY * imgWidth + blockSizeX * blockX)* 4 for y in range(blockSizeY):

我希望将图像数据切割成规则大小的屏幕块。目前我使用的方法是:

def getScreenBlocksFastNew(bmpstr):
    pixelData = array.array('c')

    step = imgWidth * 4
    pixelCoord = (blockY * blockSizeY * imgWidth +
                  blockSizeX * blockX)* 4
    for y in range(blockSizeY):
        pixelData.extend( bmpstr[pixelCoord : pixelCoord + blockSizeX * 4] )
        pixelCoord += step    
    return pixelData
bmpstr是一个原始像素数据字符串,存储为每个RGBA值一个字节。(我还可以选择使用整数元组。它们似乎花费的时间大致相同)。这将创建一个像素块数组,通过设置blockX、blockY和blockSizeX、blockSizeY来描述。目前blockSizeX=blockSizeY=22,这是我正在做的事情的最佳屏幕块大小

我的问题是,这个过程每5次执行需要0.0045秒,而将其外推到2000多个屏幕块以填充图片分辨率需要大约1.7秒,这太慢了

我希望使这个过程更快,但我不确定正确的算法是什么。我希望预先创建我的pixelData数组,这样我就不必每次都重新实例化它。然而,这给我留下了一个问题:在不使用扩展或附加的情况下,将像素RGBA值从bmpstr复制到阵列的最快方法是什么?我需要单独设置每个值吗?这不是最有效的方法


例如,如何将值bmpstr[0:100]复制到pixelData[0:100],而不使用扩展或单独设置每个值?

是否可以使用numpy?如果是这样的话,我建议一次通过字符串,将所有数据转储到
np.ndarray
中,然后通过numpy切片魔术从中取出数据。(numpy是我的锤子之一,它解决了所有问题)也许看看缓冲区/记忆视图?