from multiprocessing import Process, Queue
import time
import random
def write(que):
for val in ['A', 'B', 'C', 'D']:
print('开始写入数据%s' % val)
que.put(val)
time.sleep(random.random())
def read(que):
print('开始读取数据')
while True:
if not que.empty():
print(que.get(True))
time.sleep(random.random())
else:
print('--未读取到数据--')
break
if __name__ == '__main__':
q = Queue()
pw = Process(target=write, args=(q,))
pr = Process(target=read, args=(q,))
pw.start()
# pr.start() # 如果把读取的子进程开始写在这里,那么会直接结束,因为执行到read的时候,write还未写入数据所以需写入到后面
pw.join()
pr.start()
pr.join()
print('----执行结束----')
返回:
开始写入数据A
开始写入数据B
开始写入数据C
开始写入数据D
开始读取数据
A
B
C
D
--数据读取完毕--
----执行结束----