好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Python Process創建進程的2種方法詳解

Python Process創建進程的2種方法詳解

熱門標簽:okcc外呼系統怎么調速度 外呼電信系統 惠州龍門400電話要怎么申請 智能機器人電銷神器 熱門電銷機器人 電話機器人哪里有賣 上海企業外呼系統 河南虛擬外呼系統公司 萬利達百貨商場地圖標注

前面介紹了使用 os.fork() 函數實現多進程編程,該方法最明顯的缺陷就是不適用于 Windows 系統。本節將介紹一種支持 Python 在 Windows 平臺上創建新進程的方法。

Python multiprocessing 模塊提供了 Process 類,該類可用來在 Windows 平臺上創建新進程。和使用 Thread 類創建多線程方法類似,使用 Process 類創建多進程也有以下 2 種方式:

直接創建 Process 類的實例對象,由此就可以創建一個新的進程;

通過繼承 Process 類的子類,創建實例對象,也可以創建新的進程。注意,繼承 Process 類的子類需重寫父類的 run() 方法。

不僅如此,Process 類中也提供了一些常用的屬性和方法,如表 1 所示。

屬性名或方法名 功能
run() 第 2 種創建進程的方式需要用到,繼承類中需要對方法進行重寫,該方法中包含的是新進程要執行的代碼。
start() 和啟動子線程一樣,新創建的進程也需要手動啟動,該方法的功能就是啟動新創建的線程。
join([timeout]) 和 thread 類 join() 方法的用法類似,其功能是在多進程執行過程,其他進程必須等到調用 join() 方法的進程執行完畢(或者執行規定的 timeout 時間)后,才能繼續執行;
is_alive() 判斷當前進程是否還活著。
terminate() 中斷該進程。
name屬性 可以為該進程重命名,也可以獲得該進程的名稱。
daemon 和守護線程類似,通過設置該屬性為 True,可將新建進程設置為“守護進程”。
pid 返回進程的 ID 號。大多數操作系統都會為每個進程配備唯一的 ID 號。

表 1 Python Process類常用屬性和方法

接下來將一一對創建進程的 2 種方法做詳細的講解。

通過Process類創建進程

和使用 thread 類創建子線程的方式非常類似,使用 Process 類創建實例化對象,其本質是調用該類的構造方法創建新進程。Process 類的構造方法格式如下:

def __init__(self,group=None,target=None,name=None,args=(),kwargs={})

其中,各個參數的含義為:

  • group:該參數未進行實現,不需要傳參;
  • target:為新建進程指定執行任務,也就是指定一個函數;
  • name:為新建進程設置名稱;
  • args:為 target 參數指定的參數傳遞非關鍵字參數;
  • kwargs:為 target 參數指定的參數傳遞關鍵字參數。

下面程序演示了如何用 Process 類創建新進程。

from multiprocessing import Process
import os
print("當前進程ID:",os.getpid())
# 定義一個函數,準備作為新進程的 target 參數
def action(name,*add):
 print(name)
 for arc in add:
  print("%s --當前進程%d" % (arc,os.getpid()))
if __name__=='__main__':
 #定義為進程方法傳入的參數
 my_tuple = ("http://jb51.net/python/",\

    "http://jb51.net/shell/",\

    "http://jb51.net/java/")
 #創建子進程,執行 action() 函數
 my_process = Process(target = action, args = ("my_process進程",*my_tuple))
 #啟動子進程
 my_process.start()
 #主進程執行該函數
 action("主進程",*my_tuple)

程序執行結果為:
當前進程ID: 12980
主進程
http://jb51.net/python/ --當前進程12980
http://jb51.net/shell/ --當前進程12980
http://jb51.net/java/ --當前進程12980
當前進程ID: 12860
my_process進程
http://jb51.net/python/ --當前進程12860
http://jb51.net/shell/ --當前進程12860
http://jb51.net/java/ --當前進程12860

需要說明的是,通過 multiprocessing.Process 來創建并啟動進程時,程序必須先判斷 if __name__=='__main__':,否則運行該程序會引發異常。

此程序中有 2 個進程,分別為主進程和我們創建的新進程,主進程會執行整個程序,而子進程不會執行 if __name__ == '__main__' 中包含的程序,而是先執行此判斷語句之外的所有可執行程序,然后再執行我們分配讓它的任務(也就是通過 target 參數指定的函數)。

通過Process繼承類創建進程

和使用 thread 子類創建線程的方式類似,除了直接使用 Process 類創建進程,還可以通過創建 Process 的子類來創建進程。

需要注意的是,在創建 Process 的子類時,需在子類內容重寫 run() 方法。實際上,該方法所起到的作用,就如同第一種創建方式中 target 參數執行的函數。

另外,通過 Process 子類創建進程,和使用 Process 類一樣,先創建該類的實例對象,然后調用 start() 方法啟動該進程。下面程序演示如何通過 Process 子類創建一個進程。

from multiprocessing import Process
import os
print("當前進程ID:",os.getpid())
# 定義一個函數,供主進程調用
def action(name,*add):
 print(name)
 for arc in add:
  print("%s --當前進程%d" % (arc,os.getpid()))
#自定義一個進程類
class My_Process(Process):
 def __init__(self,name,*add):
  super().__init__()
  self.name = name
  self.add = add
 def run(self):
  print(self.name)
  for arc in self.add:
   print("%s --當前進程%d" % (arc,os.getpid()))
if __name__=='__main__':
 #定義為進程方法傳入的參數
 my_tuple = ("http://jb51.net/python/",\

    "http://jb51.net/shell/",\

    "http://jb51.net/java/")
 my_process = My_Process("my_process進程",*my_tuple)
 #啟動子進程
 my_process.start()
 #主進程執行該函數
 action("主進程",*my_tuple)

程序執行結果為:
當前進程ID: 22240
主進程
http://jb51.net/python/ --當前進程22240
http://jb51.net/shell/ --當前進程22240
http://jb51.net/java/ --當前進程22240
當前進程ID: 18848
my_process進程
http://jb51.net/python/ --當前進程18848
http://jb51.net/shell/ --當前進程18848
http://jb51.net/java/ --當前進程18848

顯然,該程序的運行結果與上一個程序的運行結果大致相同,它們只是創建進程的方式略有不同而已。
推薦讀者使用第一種方式來創建進程,因為這種方式不僅編程簡單,而且進程直接包裝 target 函數,具有更清晰的邏輯結構。

到此這篇關于Python Process創建進程的2種方法詳解的文章就介紹到這了,更多相關Python Process創建進程內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python創建堆的方法實例講解
  • Pycharm創建python文件自動添加日期作者等信息(步驟詳解)
  • 如何用tempfile庫創建python進程中的臨時文件
  • 用Python創建簡易網站圖文教程

標簽:秦皇島 百色 綏化 合肥 綿陽 周口 周口 淮安

巨人網絡通訊聲明:本文標題《Python Process創建進程的2種方法詳解》,本文關鍵詞  Python,Process,創建,進程,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python Process創建進程的2種方法詳解》相關的同類信息!
  • 本頁收集關于Python Process創建進程的2種方法詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 久久国产热视频| 国产AⅤ无码蜜乳在线观看| 亚洲裸男自慰gv网站| 97久久丁香综合精品草草| 超清 宅宅电影网236集观看地址| 9080影院| 女邻居的胸好大| 国产做受???麻豆| 国产色婷婷免费视频在线69堂| 亚洲精品国产成人| 亲胸揉胸膜下刺激免费| 我征服了岳| 欧美同性videosbestpage| 古代经典一级毛片| 大乳仙子婬荡呻吟H视频| 狠狠色噜噜狠狠狠| 视色tv| 将军与丫鬟在花园里h| 洛蓝小说| 色花堂国产精品首页第一页| 电影五十度黑| 美女张开双腿被痛爽50分钟 | 红桃视频aV一区二区三区 | 亚洲国产精品久久久久秋霞影院| 欧美另类videossexo| 欧美18精品久久久无码午夜福利| 国产微拍精品一区二区在线观看| 拍拍拍无码视频| YIN荡嗯啊伦交激烈高潮视频| 黄网站色| 人妻熟妇女欲乱系列| 大BW毛毛多巨大BW大BW| 国产婷婷综合丁香亚洲欧洲| 亚洲欧美v国产蜜芽TV| 欧美极品护士XXⅩHD| 多P混交群体交乱嗯啊3D漫画| 摸老师丝袜小内内摸出水| 日本靠逼视频| 国产露脸对白刺激2022| 成年女人18级毛片免费完整版| julia一区二区中文字幕|