У меня есть этот код, который работает слишком медленно.Динамическое распределение памяти с Cython
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()
В принципе, мой внешний цикл зациклился 2000 раз и каждый раз, присоединяя список 2048 байт в returnMask. Я думал, что могу использовать Cython, изменить returnMask в динамически выделенный массив c, и это может ускорить мой код. Может ли кто-нибудь сказать мне, если это хороший способ решить эту проблему?
Пожалуйста, разместите весь код. Переключитесь на 'xrange' вместо' range'. Кроме того, ваш код, вероятно, тратит большое количество времени на запись в терминал из-за заявлений печати. –
Чтобы отправить код, совершите поездку в [pastebin] (http://pastebin.com/) – xxmbabanexx