日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

进程创建 033

發(fā)布時(shí)間:2024/4/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程创建 033 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一 . 創(chuàng)建進(jìn)程的兩種方法 :?

  1 第一種方法: 利用Process直接生成

      p1 = Process(target = fun1,args=(1,))

      p1.start()

from multiprocessing import Process import os def func1(n):time.sleep(1)print(n) def func2(n):time.sleep(1)print(n) def func3(n):time.sleep(1)print(n) def func4(n):time.sleep(1)print(n) if __name__ == '__main__':p1 = Process(target=func1, args=(1,)) # 創(chuàng)建一個(gè)新進(jìn)程 第一種方式p2 = Process(target=func2, args=(2,))p3 = Process(target=func3, args=(3,))p4 = Process(target=func4, args=(4,))p1.start() # 給cpu發(fā)送指令 告訴cpu已準(zhǔn)備就緒 等待被調(diào)用 p2.start()p3.start()p4.start()print('主程序結(jié)束') 進(jìn)程創(chuàng)建的第一種方法

  2 第二種方法:自定義一個(gè)類(lèi) 繼承 process 類(lèi)

    重寫(xiě)run方法,傳參數(shù)的時(shí)候要寫(xiě)init 但是要注意 在init方法中運(yùn)用父類(lèi)的init方法

    Windows 下寫(xiě)代碼開(kāi)啟子進(jìn)程時(shí) 必須寫(xiě)上?if __name__ == '__main__':

from multiprocessing import Process class MyProcess(Process):def __init__(self,n,name):super().__init__()self.n = nself.name = namedef run(self): # 必須用run定義print('子進(jìn)程的進(jìn)程id',os.getpid())print('你看看',self.n) if __name__ == '__main__':p1 = MyProcess(100,name='子進(jìn)程1')p1.start()print('p1.name', p1.name)print('p1.pid', p1.pid)print('主進(jìn)程結(jié)束') 創(chuàng)建進(jìn)程的第二種方法

二 兩種參數(shù)形式

    args= (1,)? ? ?kwargs = {'n':1} 必須和執(zhí)行任務(wù)需要的形參相同 不然傳不進(jìn)去

三 驗(yàn)證進(jìn)程之間是空間隔離

# 定義全局變量 global_num = 100 def func1():global global_num #引入全局變量global_num = 0 # 將全局變量改為0print('子進(jìn)程全局變量', global_num) if __name__ == "__main__":p1 = Process(target=func1,)p1.start()time.sleep(1)print('主進(jìn)程的全局變量', global_num) # 運(yùn)行結(jié)果如下: # 子進(jìn)程全局變量 0 # 主進(jìn)程的全局變量 100

    子進(jìn)程的結(jié)果表明將全局變量修改為0 但主進(jìn)程結(jié)果仍是100 證明進(jìn)程之間是相互隔離的 不共享資源

四 join 方法 讓主進(jìn)程 加上join的地方等待 (即阻塞) 等待子進(jìn)程執(zhí)行完之后,再繼續(xù)往下執(zhí)行 我的主進(jìn)程 好多時(shí)候 , 我們主進(jìn)程需要子進(jìn)程的執(zhí)行結(jié)果 所以必須要等待.join感覺(jué)就像是將子進(jìn)程和主進(jìn)程拼接起來(lái)一樣 將異步改為同步進(jìn)行?

from multiprocessing import Process def fun1(n):time.sleep(1)print(n) if __name__ == '__main__':pro_list = []for i in range(10):p1 = Process(target=fun1,args=(i,))p1.start()pro_list.append(p1)for p in pro_list:p.join()print('主進(jìn)程結(jié)束') # 結(jié)果就是10個(gè)子進(jìn)程結(jié)束之后才會(huì)結(jié)束主進(jìn)程 或者 from multiprocessing import Process # 驗(yàn)證join方法 global_num = 100 def func1():global global_num #引入全局變量global_num = 0print('子進(jìn)程全局變量', global_num) if __name__ == "__main__":p1 = Process(target=func1,)p1.start()p1.join() # 阻塞住 等待p1子進(jìn)程執(zhí)行結(jié)束 主進(jìn)程程序才能從這里繼續(xù)往下執(zhí)行print('主進(jìn)程的全局變量', global_num) 驗(yàn)證join 方法

五 驗(yàn)證并發(fā)的執(zhí)行時(shí)間?

六 for 循環(huán)在多進(jìn)程中的應(yīng)用?

七 關(guān)閉進(jìn)程但是它只是給操作系統(tǒng)發(fā)個(gè)關(guān)閉進(jìn)程的信號(hào) 實(shí)際操作是操作系統(tǒng)關(guān)閉的

僵尸進(jìn)程和孤兒進(jìn)程(了解)

import time import os from multiprocessing import Process def func1():time.sleep(10)print(os.getpid())print('子進(jìn)程') if __name__ == '__main__':p1 = Process(target=func1,)p1.start()print('主進(jìn)程的ID',os.getpid())print('主進(jìn)程結(jié)束')

守護(hù)進(jìn)程 (應(yīng)用開(kāi)啟qq)

import time import os from multiprocessing import Process def func1():time.sleep(5)print(os.getpid())print('子進(jìn)程') if __name__ == '__main__':p1 = Process(target=func1,)# 將p1子進(jìn)程設(shè)置為守護(hù)進(jìn)程p1.daemon = True # 如果設(shè)為T(mén)rue 代表p為后臺(tái)運(yùn)行的守護(hù)進(jìn)程, 當(dāng)p的父類(lèi)進(jìn)程終止時(shí),p也隨之終止,并且設(shè)定為T(mén)rue后,p不能創(chuàng)建自己的
#新進(jìn)程 , 必須在p.start()之前設(shè)置 也不能再創(chuàng)建子進(jìn)程
p1.start()print('主進(jìn)程結(jié)束')

?十一 子進(jìn)程不能input

轉(zhuǎn)載于:https://www.cnblogs.com/f-g-f/p/9839777.html

總結(jié)

以上是生活随笔為你收集整理的进程创建 033的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。