中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

阜新| 台湾省| 昭觉县| 中卫市| 湖口县| 上虞市| 策勒县| 鹤岗市| 临清市| 弋阳县| 吴江市| 绥中县| 白城市| 明溪县| 公主岭市| 玉山县| 南京市| 枣强县| 离岛区| 湖北省| 和田市| 长汀县| 昂仁县| 响水县| 获嘉县| 莫力| 呼玛县| 罗定市| 视频| 肇州县| 竹溪县| 田东县| 江川县| 乐亭县| 南宫市| 额尔古纳市| 盐津县| 富顺县| 湘乡市| 微山县| 本溪市|