@MegaTort

Почему меняется id при multiprocess Python?

Не могу понять, почему в другом процессе у глобальной переменной меняется id
Сделал класс, чтобы протестировать мультипроцессинг
Объявил список self.counter
Создал три метода get_1..get_3, которые увеличивают длину данного списка. Не стал использовать цифры, так как у них свои айди.
Сделал метод progressbar, который должен принимать этот изменяющийся список.
Но почему-то у него тот же self.counter имеет другой id и когда я меняю её в методах get в progressbar она не будет меняется, так как другой id...
61998de782a63272873148.jpeg
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
@galaxy
когда я меняю её в методах get в progressbar она не будет меняется, так как другой id

не в id ваша проблема. get() и progressbar() запускаются из разных процессов (почитайте хотя бы в википедии, что это такое). Процессы имеют независимое адресное пространство каждый, и переменные в разных процессах никак друг с другом не связаны.
Почитайте, как обмениваться информацией между процессами.

К вопросу про id: id - это если грубо, адрес соответствующей переменной структуры в памяти (в CPython). Даже если в разных процессах этот адрес один и тот же, это не означает ничего, т.к. адресные пространства процессов независимы и виртуальны.
С другой стороны, конкретный адрес зависит от того, как выделялась память при запуске процесса и его исполнении. Multiprocessing запускает новый процесс чуть иначе, чем вы, вот и адреса разные.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
03 мая 2024, в 19:46
1000 руб./за проект
03 мая 2024, в 18:59
2500 руб./за проект
03 мая 2024, в 18:52
15000 руб./за проект