import multiprocessing
import time
# 向指定队列写入数据
def write_data(queue):
for i in range(5):
queue.put(i)
print(i)
time.sleep(0.2)
print("数据写入完成")
# 向指定队列读取数据
def read_data(queue):
while True:
# 判断队列是否为空
if queue.empty():
print("队列为空")
break
else:
value = queue.get()
print(value)
if __name__ == '__main__':
# 创建进程池中的queue
queue = multiprocessing.Manager().Queue()
# 创建进程池
pool = multiprocessing.Pool(2)
# 通过进程池执行写入数据的任务
# pool.apply(write_data, (queue,))
# # 通过进程池执行读取数据的任务
# pool.apply(read_data, (queue,))
# 执行异步异步任务会返回一个应用结果对象,这个对象里面有一个
# wait()方法可以等待异步任务执行完成以后代码再继续往下执行
result = pool.apply_async(write_data, (queue,))
# 等待写入这个异步任务执行完成以后代码再继续执行
result.wait()
pool.apply_async(read_data, (queue,))
# 关闭进程池
pool.close()
# 主进程等待进程池执行完任务以后程序再退出
pool.join()
import time
# 向指定队列写入数据
def write_data(queue):
for i in range(5):
queue.put(i)
print(i)
time.sleep(0.2)
print("数据写入完成")
# 向指定队列读取数据
def read_data(queue):
while True:
# 判断队列是否为空
if queue.empty():
print("队列为空")
break
else:
value = queue.get()
print(value)
if __name__ == '__main__':
# 创建进程池中的queue
queue = multiprocessing.Manager().Queue()
# 创建进程池
pool = multiprocessing.Pool(2)
# 通过进程池执行写入数据的任务
# pool.apply(write_data, (queue,))
# # 通过进程池执行读取数据的任务
# pool.apply(read_data, (queue,))
# 执行异步异步任务会返回一个应用结果对象,这个对象里面有一个
# wait()方法可以等待异步任务执行完成以后代码再继续往下执行
result = pool.apply_async(write_data, (queue,))
# 等待写入这个异步任务执行完成以后代码再继续执行
result.wait()
pool.apply_async(read_data, (queue,))
# 关闭进程池
pool.close()
# 主进程等待进程池执行完任务以后程序再退出
pool.join()