multiprocessing是跨平台的,但是,在不同平台下使用还是不同的,只要在win平台使用multiprocessing,大概率是会出现错误的,而在linux上可以顺利运行。代码如下:
import time
from multiprocessing import Process, Queue
q = Queue()
def write():
for char in "hellopython":
q.put(char)
print("进程1 添加了数据 %s" % char)
def read():
while 1:
if not q.empty():
print(q.get())
else:
break
p1 = Process(target=write)
p2 = Process(target=read)
p1.start()
p1.join()
p2.start()
p2.join()
问题解决后,在win下的代码修改如下:
import time
from multiprocessing import Process, Queue
def write(q):
for char in "hellopython":
q.put(char)
print("进程1 添加了数据 %s" % char)
def read(q):
while 1:
if not q.empty():
print(q.get())
else:
break
if __name__ == '__main__':
q = Queue()
p1 = Process(target=write,args=(q,))
p2 = Process(target=read,args=(q,))
p1.start()
p1.join()
p2.start()
p2.join()
具体原因,现在还不得而知,研究研究之后再更新吧。