我有这段代码运行得太慢了。
returnMask = []
for curPage in range(numPages):
print curPage
curPageAddr = curPage + startPage
cumMask = np.ones((numBytes)).astype(int) * 0xff
for maskFunction, maskAction in maskPattern:
#maskArgs['funcArgs']['startPage'] = curPageAddr
#maskArgs['funcArgs']['numPages'] = 1
inputArgs['funcArgs']['startPage'] = curPageAddr
inputArgs['funcArgs']['numPages'] = 1
curMaskName, curMaskData = maskFunction(inputArgs)
if (maskAction == 'include'):
maskIn = np.array(curMaskData).astype(int)
if (maskAction == 'exclude'):
maskIn = (~np.array(curMaskData).astype(int)) & 0xff
cumMask = cumMask & maskIn
print "cumMask size %d" % len(cumMask)
returnMask += cumMask.astype(int).tolist()
基本上,我的外部 for 循环循环了 2000 次,每次都将 2048 个字节的列表附加到 returnMask 中。我在想我可以使用 Cython,将 returnMask 更改为动态分配的 c 数组,这可能有助于加快我的代码速度。谁能告诉我这是否是解决这个问题的好方法?