from multiprocessing import Process,Queue
import time,random
def producer(q,name,food):
for i in range(5):
time.sleep(random.uniform(0.2,0.5))
print('%s produce a %s%s' %(name,food,i))
q.put(food+str(i))
def consumer(q,name):
while True:
food = q.get()
if food == None:
break
time.sleep(random.uniform(0.2,0.5))
print('%s gets a %s' %(name,food))
if __name__ == '__main__':
q = Queue()
p1 = Process(target = producer,args=(q,'Dean','Orange'))
p1.start()
c1 = Process(target = consumer,args=(q,'Amanda'))
c1.start()
p1.join()
q.put(None)
上面的代码为什么我在pycharm里面可以正常运行,在python IDLE里面运行一点反应都没有呢?
不是没有反应,是因为idle没有把子进程的stdout重定向过来,你要重定向一下才能看到输出