Ваш пример работает, вы поместили «время импорта» в начало вашего скрипта?
Другие улучшения: заблокируйте переменную перед присвоением нового значения:
def function2():
print("Sleep")
time.sleep(2)
with var.get_lock():
var.value=0
print(var.value)
И не не использовать его глобально. Лучше определите новую входную переменную в своей функции.
Окончательный пример:
#!/usr/bin/env python3
import multiprocessing, time
var=multiprocessing.Value('i',1) #Using this variable as a shared variable between the processes.
def function1(v):
#Loops until value of var is changed to 0 by function or process2
while True:
print("Hello")
if v.value==0:
break
def function2(v):
print("Sleep")
time.sleep(2)
with v.get_lock():
v.value=0
print(v.value)
if __name__ == '__main__':
multiprocessing.Process(target=function1, args = [var]).start()
multiprocessing.Process(target=function2, args = [var]).start()