1. 程式人生 > >python進程--傳參,for循環創建,join方法

python進程--傳參,for循環創建,join方法

process ESS args 方式 對象 rom 能說 方法 需要

  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方法