Функция Python, предназначенная для ссылки и изменения глобальной переменной, которая не делает этого, когда передается в качестве цели для многопроцессорного процесса. Почему? - PullRequest
0 голосов
/ 19 октября 2019

Как примерно выглядит мой код:

from multiprocessing import Process

#SOME GLOBAL VARIABLES INITIALIZED HERE. for example:
x = "something"

def main():
    some_func()

def some_func():
    #references and modifications to GLOBAL VARIABLE x HERE

if __name__ ==  '__main__':
    main()

Это работает, как и ожидалось, поскольку на x ссылаются и изменяют правильно, так, как я хочу. Однако это не :

from multiprocessing import Process

#SOME GLOBAL VARIABLES INITIALIZED HERE. for example:
x = "something"

def main():
    P = Process(target = some_func)
    P1.start()
    P1.join()

def some_func():
    #references and modifications to GLOBAL VARIABLE x HERE

if __name__ ==  '__main__':
    main()

Интересно отметить, что когда я делаю выводы в процессе, проверяя состояние «глобальной переменной», модификации, по-видимому, имеютвступил в силу. Тем не менее, они применяются только для области действия процесса, и как только он завершен (объединение), и я делаю вывод в основной, глобальная переменная находится в том же состоянии, в котором она находилась до того, как процесс был «нацелен» на него.

Я пытался использовать ключевое слово "global" внутри функции, но это не помогает. То же самое происходит.

Что я могу сделать?

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