Проблема в том, что ваш дочерний процесс создает новое общее значение, а не использует то, которое создал родительский. Ваш родительский процесс должен явно отправить Value
дочернему элементу, например, в качестве аргумента целевой функции:
from multiprocessing import Process, Value
def use_shared_value(val):
val.value = 2
if __name__ == '__main__':
val = Value('i', 1)
p = Process(target=use_shared_value, args=(val,))
p.start()
p.join()
print(val.value)
(К сожалению, у меня нет Windows Python установить, чтобы проверить это.)
Дочерние процессы не могут наследовать глобальные переменные в Windows, независимо от того, инициализированы ли эти глобальные переменные в multiprocessing.Value
экземплярах. multiprocessing.Value
не меняет того факта, что дочерний процесс повторно выполняет ваш файл, а повторное выполнение конструкции Value
не использует общие ресурсы, выделенные родителем.