Python: ошибка выделения памяти - PullRequest
0 голосов
/ 03 ноября 2011

Я читаю строки из базы данных sqlite, зацикливаю их и затем использую переменные из каждой строки в качестве аргументов для функции, которая генерирует графики, что-то вроде следующего псевдокода

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 мБ) и выполнить некоторые операции с данными, а в myrows содержится ~ 500 элементов.Из-за ошибок я думаю, что у меня заканчивается память (?), Но мне не удалось найти ничего, что помогло бы мне отследить / диагностировать эту проблему.Есть идеи, как мне это сделать?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Разве вы не можете сказать что-то вроде ниже, если все, что вас волнует, это второе поле?

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

Кроме того, мне интересно, что вы действительно хотите создать график для каждой линии ... не хотите ли вы построить все данные в одном графике?

0 голосов
/ 03 ноября 2011

Попробуйте и посмотрите, изменив ли вы for заявление на:

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

строки не извлекаются по одной за раз, а не в одной партии.

...