并发 --- 31 进程锁 守护进程 进程队列
一。進程的其他方法
1.? ?.name? ? ? 進程名? ?(可指定)
2.? .pid? ? ?進程號
3.? ?os.getpid? ? ? ? ?在什么位置就是什么的進程號
4.? ?.is_alive()? ? ?判斷子進程是否還活著
5.? ? .terminate()? ? ? ?給操作系統發出結束進程的信號
二 。進程之間是物理隔離的
?
三. 守護進程
.daemon = True? ? 設置成為守護進程
必須寫在 start 之前
跟著主進程的結束而結束
?
?四。僵尸進程和孤兒進程
1.僵尸進程(有害):一個進程使用fork創建子進程,如果子進程退出,
? ? ? ? ? ?而父進程并沒有調用wait或waitpid獲取子進程的狀態信息,
? ? ? ? ? ?那么子進程的進程描述符仍然保存在系統中。這種進程稱之為僵死進程
2.孤兒進程(無害):一個父進程退出,而它的一個或多個子進程還在運行,
? ?那么那些子進程將成為孤兒進程。孤兒進程將被init進程(進程號為1)所收養,
? ?并由init進程對它們完成狀態收集工作
五.進程鎖/互斥鎖/同步鎖? ? 鎖名 = Lock()
1.? ? 鎖名.acquire()
鎖住部分(串行)
鎖名.release()
2.? ? with? 鎖名
鎖住部分
搶票實例:
?
?六.數據共享? ? Manager
七.進程隊列 (先進先出)? ? 隊列名 = Queue (隊列長度)
1.? ?.put ()? ?放值
2.? ?.get()? ? ?取值
3.? ?防止阻塞? ?(try ...except)
超出時? ? .put_nowait()
取空時? ? .get_nowait()
4.? .qsize()? ?當前隊列有多少數據
5.? ?.full()? ? ?是否滿了? ?(Ture/False) 不可靠
6.? ?.empty()? ? ?是否空了? ?(Ture/False) 不可靠
?
?生產者消費者模型:
?
八.? Joinablequeue模型? ? 隊列有返回
隊列名 = Joinablequeue(隊列長度)
隊列名.task_done()? ? #給隊列發送一個取出的這個任務已經處理完畢的信號
隊列名.join() #就等著task_done()信號的數量,
和我put進去的數量相同時,才繼續執行
生產者消費者模型:
轉載于:https://www.cnblogs.com/amirky/p/10268584.html
總結
以上是生活随笔為你收集整理的并发 --- 31 进程锁 守护进程 进程队列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT修改程序图标
- 下一篇: 俄媒:美国“龙-2”型飞船载人发射推迟至