进程间通信-Queue
Queue队列先进先出
队列间简单通信
模拟下载数据与下载数据处理
多进程共享全局变量
from multiprocessing import Queue
# 创建队列 设置最多存放3条队列
q = Queue(3)
# 存数据
q.put(1)
q.put('Ellen')
q.put([11,22])
#
# print(q.qsize()) # 返回3 设置的队列
# 堵塞
q.put({'name':'Ellen'})
# 直接抛出异常
q.put_nowait({'name':'Ellen'})
# 取数据
print(q.full()) # 返回True
print(q.get())
print(q.get())
print(q.get())
# 堵塞
print(q.get())
print(q.get_nowait())
# 判断队列是否为满
print(q.full()) # 已运行完 返回False
#
print(q.empty()) # Ture
模拟 如何完成进程间通信?
import multiprocessing
def download(q):
'''下载数据'''
lis = [11,22,33]
for item in lis:
q.put(item)
print('下载完成,并且保存到队列中...')
def analysis(q):
analysis_data = list()
while True:
data = q.get()
analysis_data.append(data)
if q.empty():
break
print(analysis_data)
def main():
# 创建一个队列
q = multiprocessing.Queue()
t1 = multiprocessing.Process(target=download,args=(q,))
t2 = multiprocessing.Process(target=analysis,args=(q,))
t1.start()
t2.start()
if __name__ == '__main__':
main()