Python 多工(程序) day1(3)

2022-08-21 23:21:08 字數 1016 閱讀 6986

程序間的通訊

可以用socket進行程序間的通訊

可以用同一檔案來進行通訊,即在同乙個檔案中進行讀寫操作的交流(但是在硬碟上讀取和寫入比較慢,記憶體執行太快了)

queue佇列(記得是佇列)在同一記憶體中通訊

因為程序之間不能共享全域性變數,所以通過建立佇列,把佇列當成實參傳入函式

multiprocessing.queue()  建立佇列,括號裡面可以填數字代表最多存放幾個,不填的話,系統自動把你選擇最大的

可以用  x.put(xx) 來存入資料,如果是滿的,就堵塞

可以用  x.get(xx) 來取出資料,如果是空的,就堵塞

可以用  x.full() / x.empty()  來檢驗佇列是否為 慢/空,返回 false或 true

用來解耦

程序池pool作用:快取,可以讓人們重複利用程序池裡的程序,因為程序的建立和銷毀需要大量資源

概念:就像開飯店一樣,每個座椅都是乙個程序,總不能來乙個人買一套座椅,然後再賣掉,再來乙個人再買再賣;

所以只能預先買好座椅,但如果來100個人,難道要買一百套嗎? 

不!可能只買20套就是最好的(需要根據測試),這樣就能即快速,又經濟地服務所有人

multiprocessing.pool(3)  最大程序數3,但如果在短時見內加入多個程序,即不會失敗也不會堵塞,而會把多出來的程序儲存起來

x.close()  # 關閉程序池

x.join()     # 程序池的主程序不會等待池裡的程序結束才結束,會自己結束,所以要呼叫 x.join() 來等待池中的子程序結束,必須放在close語句後

試了一下發現多程序需要在main函式中使用,如果直接在外面建立使用就不行,只能加main函式,然後在main中呼叫

如果想要讓主程序和程序池進行通訊,就要用 multiprocessing.manager.queue()  建立佇列

Python 多工 執行緒 day1

多工就是可以讓一台電腦同時執行多個命令。以前的單核cpu是怎麼做到同時執行多個命令的?時間片輪轉 其實以前的單核cpu是讓作業系統交替執行命令,每個任務執行0.01秒,這樣看起來就像是在同時執行多個命令。就跟手翻動畫一樣。並行 真的多工 併發 假的多工 執行緒 乙個程式執行,一定有乙個執行 的東西,...

Python 多工(協程) day1

比執行緒所需的資源更少 可以用yield 實現多工,其實是併發,但速度很快,相當於同時進行 import time def test1 while true print 1 yield def test2 while true print 2 yield def main t1 test1 t2 t...

多工程式設計 程序和執行緒day1

多工 實現方式 匯入模組 import multiprocessing 建立乙個程序物件 a multiprocessing.process target 函式名 啟動建立好的程序 a.start 多執行緒 實現步驟 匯入模組 import threading 建立乙個程序物件 a threadin...