Как лучше всего организовать работу с большими списками в Python?
Есть софт на C#, который выполняет две простые задачи:
1) Из имеющегося списка int'ов в буфере обмена удалить те, которые имеются в списке int'ов в файле (10кк+ строк) и результат вернуть в буфер в виде списка int'ов и вывести на экран количество удаленных строк (дублей)
или
2) Добавить все строки int'ов в буфере обмена в имеющийся список в файл с удалением дубликатов и вывести на экран количество новых уникальных добавленных строк в файл
Изначально софт работал отлично, но в последнее время, с увеличением объема списков - стали постоянно вылезать какие-то глюки в логике работы софта, хотя код остался неизменным. В связи с чем было принято решение переписать код на другой ЯП, конкретно выбор пал на python.
Гугл привел меня к идее использования наборов (set([1,2,6,8]) - set([2,3,5,8]))
Так вот, хотелось бы уточнить, насколько это решение подходит для подобных объемов данных?
И как лучше организовать хранение этого большого списка на 10кк int'ов - в файле? бд? еще как-то?
Изначально софт работал отлично, но в последнее время, с увеличением объема списков - стали постоянно вылезать какие-то глюки в логике работы софта, хотя код остался неизменным. В связи с чем было принято решение переписать код на другой ЯП, конкретно выбор пал на python.
Мне не нравится ваше решение. Чисто технически C#/Net - генерирует более совершенный исполнимый код. И он и должен работать быстрее.
Дайте шанс c# приложению. Запустите под профайлером и найдите тот алгоритм или кусок кода который работает медленно.
Иначе вместо одной проблемы вы получите две новых. Python не славится рациональным хранением коллекций в памяти. Может быть еще хуже.