Это потому, что вы не делали свою программу параллельной с двумя процессами, а вместо этого два процесса выполнялись в тандеме.Что вам нужно сделать, это запустить оба процесса до любого join
.Как моя модификация ниже:
from multiprocessing import Process, Manager, Value
from ctypes import c_char_p
import time
def work1(string):
i = 2
string.value = i
while True:
i = i+1
string.value = i
print("work1 set value to "+str(string.value))
time.sleep(2)
def work2(string):
while True:
print("Value set in work1 " + str(string.value))
time.sleep(2)
if __name__ == '__main__':
manager = Manager()
string = manager.Value(int, 0, lock=False);
p1=Process(target=work1, args=(string,))
p2=Process(target=work2, args=(string,))
p1.start()
p2.start()
p2.join()
p1.join()
Действительно, если вы пишете код таким образом, join
никогда не происходит из-за бесконечного цикла while
.