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  ,大家花點時間把上面這三方法,理解一下,記一下.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM