在python中进程之间可以用queue队列实现共享资源。
基本方法:
Queue.Queue(maxsize=0) FIFO, 如果maxsize小于1就表示队列长度无限
Queue.LifoQueue(maxsize=0) LIFO, 如果maxsize小于1就表示队列长度无限
Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.get([block[, timeout]]) 读队列,timeout等待时间
Queue.put(item, [block[, timeout]]) 写队列,timeout等待时间
Queue.queue.clear() 清空队列
其实python中queue实现了两个进程之间资源的共享。一个进程可以存数据,另外一个进程可以从其中拿数据。实现代码如下:
import multiprocessing
import time
#创建一个queue队列作为容器
q = multiprocessing.Queue()
def put(num):
i = 0
while i<= num:
#向队列中添加数字
q.put(i)
i += 1
time.sleep(1)
def get():
while True:
#取出队列中的数字
num = q.get()
time.sleep(1)
print(num)
#若队列的数字已经去完,则退出循环
if q.empty():
break
def main():
#创建连个进程
p_put = multiprocessing.Process(target=put,args=(10,))
p_get = multiprocessing.Process(target=get)
#开启这两个进程
p_get.start()
p_put.start()
if __name__ == '__main__':
main()