Ваша программа может замедляться, пытаясь выделить достаточно памяти для строк размером 1,2 млн. Другими словами, проблема со скоростью может быть связана не с синтаксическим анализом / манипулированием строк, а скорее с l.extend
. Чтобы проверить эту гипотезу, вы можете поместить оператор print в цикл:
for v in item.values():
print('got here')
l.extend(get_fields(v.split(',')))
Если операторы печати становятся все медленнее и медленнее, вы, вероятно, можете сделать вывод, что l.extend
является виновником. В этом случае вы можете увидеть значительное улучшение скорости, если вы можете переместить обработку каждой строки в цикл.
PS: Вы, вероятно, должны использовать модуль csv
, чтобы позаботиться о разборе для вас более высоким способом, но я не думаю, что это сильно повлияет на скорость.