这是因为你没有让你的程序与两个进程并行,而是两个进程串联运行。你需要做的就是开始 的 都 强> 之前的过程 join 。像我下面的修改:
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 环。
while