91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python標準庫的很多初步進程是怎樣的

發布時間:2021-10-15 09:10:51 來源:億速云 閱讀:101 作者:柒染 欄目:編程語言

Python標準庫的很多初步進程是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

  我們知道使用subprocess包來創建子進程,但這個包是有兩個很大的局限性的:

  1)我們總是讓subprocess運行外部的程序,而不是運行一個Python腳本內部編寫的函數。

  2)進程間只通過管道進行文本交流。以上限制了我們將subprocess包應用到更廣泛的多進程任務。(這樣的比較實際是不公平的,因為subprocessing本身就是設計成為一個shell,而不是一個多進程管理包)

threading和multiprocessing

  multiprocessing包是Python中的多進程管理包。與threading.Thread類似,它可以利用multiprocessing.Process對象來創建一個進程。該進程可以運行在Python程序內部編寫的函數。該Process對象與Thread對象的用法相同,也有start(),run(),join()的方法。此外multiprocessing包中也有Lock/Event/Semaphore/Condition類(這些對象可以像多線程那樣,通過參數傳遞給各個進程),用以同步進程,其用法與threading包中的同名類一致。所以,multiprocessing的很大一部份與threading使用同一套API,只不過換到了多進程的情境。

  但在使用這些共享API的時候,我們要注意以下幾點:

  在UNIX平臺上,當某個進程終結之后,該進程需要被其父進程調用wait,否則進程成為僵尸進程(Zombie)。所以,有必要對每個Process對象調用join()方法(實際上等同于wait)。對于多線程來說,由于只有一個進程,所以不存在此必要性。

  multiprocessing提供了threading包中沒有的IPC(比如Pipe和Queue),效率上更高。應優先考慮Pipe和Queue,避免使用Lock/Event/Semaphore/Condition等同步方式(因為它們占據的不是用戶進程的資源)。

  多進程應該避免共享資源。在多線程中,我們可以比較容易地共享資源,比如使用全局變量或者傳遞參數。在多進程情況下,由于每個進程有自己獨立的內存空間,以上方法并不合適。此時我們可以通過共享內存和Manager的方法來共享資源。但這樣做提高了程序的復雜度,并因為同步的需要而降低了程序的效率。

Process.PID中保存有PID,如果進程還沒有start(),則PID為None。

  我們可以從下面的程序中看到Thread對象和Process對象在使用上的相似性與結果上的不同。各個線程和進程都做一件事:打印PID。但問題是,所有的任務在打印的時候都會向同一個標準輸出(stdout)輸出。這樣輸出的字符會混合在一起,無法閱讀。使用Lock同步,在一個任務輸出完成之后,再允許另一個任務輸出,可以避免多個任務同時向終端輸出。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普陀区| 九寨沟县| 苏尼特左旗| 湖北省| 微山县| 荥经县| 大英县| 波密县| 璧山县| 东山县| 大城县| 沅江市| 怀柔区| 玉林市| 丰台区| 尤溪县| 静宁县| 文水县| 新郑市| 武义县| 安丘市| 大丰市| 上林县| 通江县| 天柱县| 德令哈市| 南皮县| 崇义县| 马关县| 沙湾县| 昌黎县| 仪征市| 灵石县| 景宁| 化德县| 博野县| 长泰县| 澜沧| 罗山县| 阿鲁科尔沁旗| 来安县|