Как разделить переменную с разветвленным процессом в python? - PullRequest
0 голосов
/ 08 июля 2019

В python3.6 у меня есть следующий код, который разветвляет процесс, и потомок меняет переменную. Тем не менее, переменная с тем же именем остается неизменной

import os, sys, time

var = 42

child_pid = os.fork()
if child_pid == 0:
    print(f"Child Process start {os.getpid()}.")
    var = 20
    print(f"Child variable {var}")
    time.sleep(10)
    print(f"Child Process end {os.getpid()}.")
    sys.exit(0)
else:
    print(f"Parent Process start {os.getpid()}.")
    for x in range(20):
       time.sleep(2)
       print(f"Parent variable {var}")
    print(f"Parent Process end {os.getpid()}.")

Как я могу разделить переменную var в примере между дочерним и родительским процессами?

1 Ответ

0 голосов
/ 08 июля 2019

Формирование процесса создает новый процесс с новым PID и в отдельном пространстве памяти. Так что в принципе вы не можете совместно использовать переменные, даже если они глобальные.

Если вы создадите поток, вы можете поделиться глобальными переменными.

В противном случае с двумя (или более) процессами вы можете использовать IPC (расшифровывается как межпроцессное взаимодействие): https://docs.python.org/fr/3.5/library/ipc.html.

Обычный IPC - это сокеты (даже локальные), но вы можете выбрать другой (например, отображение памяти, очереди сообщений, общая память ...).

Вот пост для той же проблемы, но в C, IPC, обрабатываемый ОС, принцип остается тем же: Как разделить память между процессом fork ()? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...