Как увеличить скорость работы «парсера» на python?

Добрый день.
Есть скрипт на python, который разбирает csv файл из 5 столбцов и 25-30 тыс. строк.

Следовательно, в скрипте происходит итерация по файлу, выполнение кое-каких действий и запись в БД.
Такой файл скрипт разбирает за 12 минут.
Intel i7
CPython 3.3

Как можно улучшить скорость работы?
  • Вопрос задан
  • 3516 просмотров
Пригласить эксперта
Ответы на вопрос 5
maxaon
@maxaon
Парсер тут ни при чем. Вставляйте не по одной записи за раз а по 500 и более.
Ответ написан
zxmd
@zxmd
Вангую что... без исходников не вангуется.
Скорее всего дело не в парсинге CSV а в записе в БД.
Ответ написан
Комментировать
xlamys
@xlamys Автор вопроса
def unpack_csv(line):
    csv = line.split(";")
    csv_1 = csv[0]
    csv_2 = csv[1]
    ...
    return csv_1, csv_2, csv_3, csv_4, csv_5

db = pymysql.connect(host='', user='', passwd='', db='', charset='utf8')
cursor = db.cursor()
file = open('test.csv', 'r')

for line in file:
    number, date, fio, email, about = unpack_csv(line)
    sql = """INSERT INTO mydb(number, date, fio, email, about)
             VALUES ('%s','%s', '%s', '%s', '%s')
             """, (number, date, fio, email, about)
    cursor.execute(sql)
    db.commit()
db.close()
file.close()
Ответ написан
@mcleod095
Ну так по одной записи вставляете
введите переменную типа сколько записей за раз вставлять keys=10000
ну пока счетчик цикла меньше то ззабивайте все данные в буфер
как только равен или больше то делаешь insert с данными
обнуляем счетчик и опять читаем строки далее
ну и в конце надо не забыть скинуть последние данные в БД
Ответ написан
Комментировать
xlamys
@xlamys Автор вопроса
Если записывать не по одной записи, а по 10000
Результат:
CSV файл весом в 1,3 мб (20тыс.строк)
real 8.26
user 5.25
sys 0.93
Очень круто) Всем спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽
14 июл. 2024, в 20:18
20000 руб./за проект
14 июл. 2024, в 20:15
10000 руб./за проект
14 июл. 2024, в 19:15
1000 руб./за проект