1. 程式人生 > >【Python】程序與程序池的屬性方法及注意事項

【Python】程序與程序池的屬性方法及注意事項

1、程序的概念

      程序(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。在早期面向程序設計的計算機結構中,程序是程式的基本執行實體;在當代面向執行緒設計的計算機結構中,程序是執行緒的容器。程式是指令、資料及其組織形式的描述,程序是程式的實體。

2、Process程序類的語法結構

       Process([group [, target [, name [, args [, kwargs]]]]])

      group:指定程序組,使用None,一般不用設定

      target:執行的函式名

      name:程序名

      args:以元組方式給執行任務傳參

      kwargs:以字典方式給執行任務傳參

3、程序的建立

      匯入程序模組

      import multiprocessing

      建立子程序

      程序名 = multiprocessing.Process(target = 函式名)

4、程序的常用方法和屬性

      start():啟動子程序

      join:主程序等待當前子程序執行結束後再執行後面的程式碼

      terminate():立即銷燬子程序

      檢視當前程序:變數名 = multiprocessing.current_process()

      檢視當前程序編號:current_process.pid, os.getpid()

      檢視父程序編號:os.getppid

      根據程序編號殺死程序:os.kill(os.getpid(), 9)

5、注意點

       程序間相互獨立,不共享全域性變數

       預設主程序會等待所有的子程序執行完成程式再退出,設定守護主程序後,子程序會在主程序退出後直接銷燬:當前子程序名.daemon = True

       6、程序間通訊 Queue

       建立訊息佇列:佇列名 = multiprocessing.Queue(佇列中最大訊息個數)

       佇列可以放入任意資料型別:佇列名.put(要放入的資料),取值:get()

       .put():如果佇列滿了,需要等待佇列有空閒位置才能放入資料,否則一直等待, .put_nowait():如果佇列滿了,不等待,放入不成功直接崩潰,建議使用put

        .get():如果佇列空了,要等待佇列有值後才能獲取佇列中的資料,.get_nowait():佇列為空不等待,同樣會崩潰

       .full():檢視佇列是否滿了,滿了返回True,否則返回False; .qsize():檢視佇列資料個數,不建議使用.empty

        7、程序池

        程序池可以根據任務執行情況自行建立程序,合理利用程序完成多工。

        建立程序池:程序池名 = multiprossing.Pool(最大程序數),提示:使用程序池建立的程序是守護主程序的狀態,預設自己通過Process建立的程序是不是守住主程序的狀態

        選擇同步或非同步執行任務

        同步(一個任務執行完後,另一個任務才執行):程序池名.apply(函式名)

        非同步(任務執行不會等待,多個任務一起執行):程序池名.apply_async(函式名)

相關推薦

Python程序程序屬性方法注意事項

1、程序的概念       程序(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。在早期面向程序設計的計算機結構中,程序是程式

VUEgit命令列程式碼提交流程注意事項

本篇為我在提交程式碼的過程中使用過的命令 僅做記錄參考 git命令還有很多 其他功能 可自行百度 命令git add (1)git add . 提交全部修改檔案 (2)git add +檔名 提交單個檔案 命令 git commit -m '描述’ eg: git commi

[C++]友元的三種宣告注意事項

class A{     friend void fri_fun(A); private:     int a=9; }; void fri_fun(A aa){     cout<<aa.a<<endl; }   在程

Python 如何動態新增類屬性方法

一些概念 涉及到一些基礎概念,本章要討論的相關術語。但是有些概念又是一時半會講不清楚,所以筆者儘量找到簡練形象的描述,並附上參考連結。  物件 屬性 方法 類 例項 物件(object):在面向物件程式設計中(OPP),萬物都是物件。物件應該具有屬

Python爬蟲反爬蟲大戰

公司 學校 爬取 nbsp 識別 防止 toc 壓力 自動 爬蟲與發爬蟲的廝殺,一方為了拿到數據,一方為了防止爬蟲拿到數據,誰是最後的贏家? 重新理解爬蟲中的一些概念 爬蟲:自動獲取網站數據的程序反爬蟲:使用技術手段防止爬蟲程序爬取數據誤傷:反爬蟲技術將普通用戶識別為爬蟲,

Pythonpop迭代不能共用

l = [0,1,5,3,2,7,6] for i in range(len(l)): print(i) if l[i]>3: l.pop(i) d=dict() for i in range(10): d[i] = i i=0 for k,

Python例項

面向物件最重要的概念就是類(Class)和例項(Instance),必須牢記類是抽象的模板,比如Student類,而例項是根據類創建出來的一個個具體的“物件”,每個物件都擁有相同的方法,但各自的資料可能

Pythonimportfrom import真的是淺拷貝和深拷貝嗎

最近在準備面試,回頭看python基礎的過程中,遇到一些小問題。 模組的搜尋順序是: 當前程式所在目錄 當前程式根目錄 PYTHONPATH 標準庫目錄 第三方庫目錄site-packages目錄 path 變數本質是一個列表,可以向path中新增模

Pythoniteritems()itemgetter()函式作用

iteritems()函式作用: 以書中classCount.iteritems()為例,作用是將字典classCount分解為元組列表 若classCount = {‘A’:1,‘B’:2,‘C’:3} 則分為 [‘A’,’B’,’C’] 與 [1,

Python自動化測試框架-共通方法匯總

pytho 自動化 writer rand save 自動化測試框架 n) 很慢 叠代 1.滾動滾動條(有的時候頁面元素element取得對但是並沒有回顯正確的數據,可能是因為頁面第一次加載很慢,所以頁面可能做了滾動到哪裏就加載到哪裏的效果,此刻我們就需要用到滾動條自動滾動

監控Jprofiler監控tomcat的配置方法報錯解決過程

could CA 監聽端口 arch https img .net http 沒有 準備工作: 1.Jprofiler for Linux安裝包一個(服務端) 2.Jprofiler for windows安裝包一個(客戶端) 3.各自安裝、解壓 Linux:/opt/jp

C++向量(vector) 基本使用方法注意事項

介紹: 向量(Vector)是一個封裝了動態大小陣列的順序容器(Sequence Container)。跟任意其它型別容器一樣,它能夠存放各種型別的物件。可以簡單的認為,向量是一個能夠存放任意型別的動態陣列。 特點: 1.順序序列 順序容器中的元素按照嚴格的線性順序排序。可以通過元素

vuewebpack 和 webpack-simple依賴包遷移注意事項

bogon:~ ericzhang$ vue list   Available official templates:   ★  browserify - A full-featured Browserify + vueify setup with hot-reload,

原創SAP/Oracle 集團企業海外全球化實施注意事項: 一帶一路本地化 (持續更新)

ABC集團SAP的系統平臺已經擴充套件到全球一百來個國家和地區,SAP系統平臺的全球實施專案中, 當時是需要支援當地的業務和法律法規的合規要求。 當時客戶也是缺乏當地的資源以及對當地法律法規和業務實踐的瞭解,需要團隊提供了全球化的支援,通過我們全球產品技術專家充分傳遞了各區域的本地化支援和實踐 而且近年

建立子程序的4種方法注意事項

/***********************************fork & vfork*********************************/1 1. fork:子程序拷貝父程序的資料段     vfork: 子程序與父程序共享資料段 2. 

深入瞭解typeofinstanceof的使用場景注意事項

JavaScript中的資料型別分為兩類,**undefined,number,boolean,string,symbol,bigint,null[^1]組成的基礎型別**和**Object、Function、Array等型別組成的引用型別**。 ![在這裡插入圖片描述](https://img2020.c

Python-006 python獲取當前系統所有程序pid名稱

【Python】-006 python獲取當前系統所有程序pid與名稱    【Python】-006 python獲取當前系統所有程序pid與名稱 1、實現 2、注意 1、實現   

Python程序

程序池Pool 當需要建立的子程序數量不多時,可以直接利用multiprocessing中的Process動態成生多個程序,但如果是上百甚至上千個目標,手動的去建立程序的工作量巨大,此時就可以用到multiprocessing模組提供的Pool方法。 初始化Pool時,可以

PythonPython程序庫multiprocessing中程序Pool的返回值順序

問題起因最近要將一個文字分割成好幾個topic,每個topic設計一個regressor,各regressor是相互獨立的,最後彙總所有topic的regressor得到總得預測結果。沒錯!類似bagging ensemble!只是我沒有抽樣。文字不大,大概3000行,top

Python程序程序pool執行時報錯:ValueError: Pool not running

【筆記】這個問題的根源在於:pool.close()提前生效,關閉了pool。所以提示pool沒有執行。=============================================我剛接觸python爬蟲,所以有些地方不是很懂。我最近寫了一個python爬蟲,作