Python:内存分配错误

时间:2011-11-03 14:30:57

标签: python memory segmentation-fault allocation

我正在从sqlite db中读取行,循环遍历它们,然后使用每行中的变量作为生成绘图的函数的参数, 像下面的伪代码

conn=sqlite3.connect(db)
c=conn.cursor()
myrows=c.execute("select * from values WHERE var=1")
for burst in myrows:
    met=burst[1]
    make_plot(met)
c.close()    

经过一段时间后,会出现以下错误之一:

1)请求了86392个项目但只读取了0个分段错误

2)无法分配3072000个字节    中止

3)分段错误

make_plot()必须读取一个大文件(~8 mB)并对数据执行一些操作,并且myrows中有大约500个元素。从错误我认为我的内存不足(?)但我没有找到任何可以帮助我追踪/诊断这个问题的东西。关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:1)

如果你关心的是第二个领域,你能不能说下面的内容吗?

myrows=c.execute("select values.bust from values WHERE var=1")

另外,我想知道你真的想为每一行创建情节...你不想在一个情节中绘制所有数据吗?

答案 1 :(得分:0)

尝试查看是否将for语句更改为:

for burst in c.execute("select * from values WHERE var=1"):
    # your code here

不会一次检索一行,而不是一次检索。