python進程--傳參,for循環創建,join方法
OK上一篇我們簡單學了一下 進程 的創建方式,那麽這一篇,我們把其他一些邊角料..不對,不是邊角料..........也是很重要的一些小知識點
也是經常用的。
話不多說直接進入主題
傳參:
from multiprocessing import Process 這一步大家還記得吧,對嘍,不管進程寫那些東西,我們第一步先寫這個,導入Pocess
先來個函數的哈! 這是第一種,這一種裏面有兩種傳參對象
def f1(n):
print(n)
if __name__ == ‘__main__‘:
p1 = Process(target=f1,args=("雞蛋灌餅") # 先來個字符串的
p1.start()
p1 = Process(target=f1,kwargs={‘n‘:‘大力‘}) # 再來個字典的.
p1.start()
這是第一只種, 這是一個進程哈,都是p1,可不是兩個進程,大家別搞混啦哈,只是為了演示兩種傳參對象,好了說第二種傳參的方式,
再來個類的:
class MyProcess(Process):
def __init__(self,name):
super().__init__() #別忘了執行父類的init
self.name = name
def run(self):
print(‘寶寶and%s不可告人的事情‘%self.n)
if __name__ == ‘__main__‘:
p1 = MyProcess("炸雞") #對,上一篇見過,就是個這樣的.就這
p1.start()
傳參就是這兩種了,很簡單,大家好好記一下,多敲幾遍
接下來就是for 循環創建了,因為我們工作,平時用都不可能說就創建一個兩個 的進程,
所以用for循環能快速創建多個進程
from multiprocessing import Process
def f1(i):
print(i)
def f2(i)
print
if __name__ == ‘__main__‘:
for i in range(20): 在這塊加個for循環, rang是範圍, ()裏面寫創建的個數 20個 剩下兩步都沒變,
p1 = Process(target=f1,args=(i,))
p1.start()
以上就是 for 循環創建進程了 創建完,我們就有20個進程了 大家可能覺得很抽象,20個進程在哪呢,我咋就沒看呢,
創建 20個進程都是在底層內存裏面,創建好的, 這裏理解不了沒關系,往後慢慢了解就知道了
接下來是join方法
join在字符串裏面是拼接的意思,在這裏是是阻斷的意思
from multiprocessing import Process
def f1():
print(‘啤酒‘)
def f2():
print(‘可樂‘)
if __name__ == ‘__main__‘:
p1 = Process(target=f1,)
p1.start()
p1.join() # 這一步呢就是主進程等待子進程運行完才繼續執行,首先我們要知道在運行進程的時候,
主進程的代碼運行速度是非常快的,會比子進程還要快的,如果不阻塞的話,可能子進程的功能還沒實現,就先把主進程的代碼
打印出來了,所以這時候就需要join阻隔了,讓子進程先執行. 對,就是這樣
p2 = Process(target=f2,) #這是第二個進程 join寫在哪個進程下面,就先執行哪個
p2.start()
p2.join()
print(‘我要等了...等我的子進程...‘) 這一步就是傳說中的主進程 代碼
print(‘我是主進程!!!‘) 這一句也是
OK ,大家花點時間把上面這三方法,理解一下,記一下.
python進程--傳參,for循環創建,join方法