1.队列基本用法
q=Queue(),若括号中没有指定数量,默认无上限,
Queue.qsize(),返回当前队列包含的消息数量;
Queue.empty(),如果队列为空,返回True,反之False;
Queue.full(),如果队列满了,返回True,反之False;
Queue.get([block[, timeout]]),获取队列中的一条消息,然后将其从列队中移除,block默认值为True;
2. 进程间的通信实例
# -*- coding:utf-8 -*-
import multiprocessing
from logger import logger
def send_message(q):
# 模拟消息数据
data = list(range(10))
# 向队列中写入数据
for i in data:
q.put(i)
logger.info("{'send_message': %s} 已下载并添加到队列中... " % data)
def accept_data(q):
accept_message = list()
# 接收队列消息
while True:
data = q.get()
accept_message.append(data)
if q.empty():
break
logger.info("{'accept_message': %s}" % accept_message)
def main():
# 创建一个队列
q = multiprocessing.Queue()
# 创建多个进程
p1 = multiprocessing.Process(target=send_message, args=(q,))
p2 = multiprocessing.Process(target=accept_data, args=(q,))
p1.start()
p2.start()
p1.join()
p2.join()
if __name__ == "__main__":
main()