立即學習:https://edu.csdn.net/course/play/24458/296433?utm_source=blogtoedu
隊列和管道
?
1.存在的意義:
?????? 1)在前面的筆記中,使用join和互斥鎖來保證了硬盤數據共享的數據安全性,但是降低了代碼的運行效率;
?????? 2)而隊列和管道的操作空間是內存,內存操作運行速度會更快,因此使用隊列既可以保證數據共享的安全,也可以保證代碼的運行效率;且互斥鎖得考慮鎖什么時候添加什么時候釋放,比較難以掌握這個時間節點,但是隊列就不用考慮這個問題;
?????? 3)隊列是先進先出,管道是先進后出,隊列和管道其實是相當于自帶鎖的。
?
2.Queue模塊
1)put函數:往隊列中添加元素
2)get函數:從隊列中取得元素
3)full函數:確定隊列是否元素已經滿
4)empty函數:確定隊列是否還有元素
?
3.代碼
????? 隊列和管道里面不適宜存儲較大的文件,一般只是使用在隊列中存儲一些信息
from multiprocessing import Queue
# from queue import Queue#和上面的模塊的代碼是一樣的q = Queue(3)#定義一個隊列,只能存放三個元素q.put([2,2,2,2])
q.put(3)
q.put('中國')
print(q.full())print('*'*50)print(q.get())
print(q.get())
print(q.get())
print(q.empty())
運行結果:
True
**************************************************
[2, 2, 2, 2]
3
中國
True