Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2012 01:55:49

juche-songun
Зарегистрирован: 2012-10-26
Сообщения: 42
Репутация: +  -2  -
Профиль   Отправить e-mail  

multiproccessing и переменные.

Есть кортеж(Ранее список) в нем 5 милионов значений, в памяти около 250Мб занимает, я создаю 26 Procces'ов и каждому передаю кортеж, от чего растет занятая память (создает новые кортеж в процессе), увы точно не помню законы видимости в Python и работу с объектам чтоб точно что либо утверждать.

Вопрос таков, как мне не дублировать кортеж и др. переменные в памяти, а просто передать их при вызове процесса.
Update:
Сменил список на кортеж помогло при старте но потом все равно лезим в свап, может стоит вернуть в список и удалять из списка ссылку на объект. Но тут возникает сразу вопрос не похерит ли он объект навредив тем самым соседним процессам и не будет проблем с индексацией?

Пример моего говно кода выложу утром, а сейчас баиньки.
З.Ы.
Кортеж один на все процессы, но есть и уникальная переменная так что решение через Queue не прошло.

Отредактировано juche-songun (Ноя. 14, 2012 03:22:40)

Офлайн

#2 Ноя. 14, 2012 04:11:20

juche-songun
Зарегистрирован: 2012-10-26
Сообщения: 42
Репутация: +  -2  -
Профиль   Отправить e-mail  

multiproccessing и переменные.

Решение немного топорное, я решил путем ограничения количества одновременно запущенных процессов используя счетчик + .

join()
!
К итогу процесс отрабатывает за 1 минуту 5 лямов за 7 приходов по 4 процесса.

Офлайн

#3 Ноя. 14, 2012 04:50:08

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

multiproccessing и переменные.

А такой вариант - кортеж хранится у одного процесса, который выполняет поиск/работу(что вы там с ним делаете?) по запросу других процессов. Ну т.е. клиенты-сервер.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Ноя. 14, 2012 04:50:36)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version