首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:内存泄漏

Python:内存泄漏
EN

Stack Overflow用户
提问于 2014-02-03 10:12:13
回答 1查看 506关注 0票数 0

我使用Python在LCD显示器(Raspberry )上显示位图图像。这是很好的工作,但似乎我创造了一个巨大的内存泄漏。这段代码似乎是罪魁祸首:

代码语言:javascript
复制
def displayBitmap(self):
    spi.open(0,0)
    f = open("data/565.bmp", "rb")
    imgdata = f.read()
    f.close()

    self.setAddress(0, 0, LCD_WIDTH-1, LCD_HEIGHT-1)
    k = 0
    for i in range(0, (LCD_WIDTH*LCD_HEIGHT)):
        dt = (ord(imgdata[k]) | (ord(imgdata[k+1]) << 8))

        self.spiOutData(dt,2)
        k +=2
    imgdata = None
    spi.close()

..。

代码语言:javascript
复制
def spiOutData(self, data, bytes=1):
    io.digitalWrite(15, io.LOW)
    io.digitalWrite(16, io.HIGH)

    io.digitalWrite(self.dcPin, io.HIGH)

    if (bytes == 1):
        spi.xfer2([(data)])
    else:
        spi.xfer2([(data>>8)])
        spi.xfer2([(data)])

它在一段时间内运行良好,但在某一时刻由于内存不足而终止。我的猜测是,imgdata的内容从未被删除,但我的知识似乎太糟糕了,无法找到原因。你能给我个提示吗?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-03 20:14:16

以下是我的发现:

  • py-spidev模块(或者spidev本身的某些部分)似乎是问题所在。
  • 除了内存泄漏之外,py-spidev速度非常慢。

现在我已经摆脱了py-spidev,并通过文件句柄直接写入/dev/spidev0.0。现在不再需要过多的内存使用和SPI通信,大约需要2秒,大约是之前所需时间的十分之一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21524477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档