Форум сайта python.su
Есть кортеж(Ранее список) в нем 5 милионов значений, в памяти около 250Мб занимает, я создаю 26 Procces'ов и каждому передаю кортеж, от чего растет занятая память (создает новые кортеж в процессе), увы точно не помню законы видимости в Python и работу с объектам чтоб точно что либо утверждать.
Вопрос таков, как мне не дублировать кортеж и др. переменные в памяти, а просто передать их при вызове процесса.
Update:
Сменил список на кортеж помогло при старте но потом все равно лезим в свап, может стоит вернуть в список и удалять из списка ссылку на объект. Но тут возникает сразу вопрос не похерит ли он объект навредив тем самым соседним процессам и не будет проблем с индексацией?
Пример моего говно кода выложу утром, а сейчас баиньки.
З.Ы.
Кортеж один на все процессы, но есть и уникальная переменная так что решение через Queue не прошло.
Отредактировано juche-songun (Ноя. 14, 2012 03:22:40)
Офлайн
Решение немного топорное, я решил путем ограничения количества одновременно запущенных процессов используя счетчик + .
join()
Офлайн
А такой вариант - кортеж хранится у одного процесса, который выполняет поиск/работу(что вы там с ним делаете?) по запросу других процессов. Ну т.е. клиенты-сервер.
Отредактировано PooH (Ноя. 14, 2012 04:50:36)
Офлайн