歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋(píng)果6袋
6
麥子學(xué)院

Python中使用os.fork() 如何創(chuàng)建子進(jìn)程?

發(fā)布時(shí)間:2017-08-05 20:22  回復(fù):0  查看:2828   最后回復(fù):2017-08-05 20:22  
本文和大家分享的主要是python中使用os.fork() 創(chuàng)建子進(jìn)程相關(guān)內(nèi)容,一起來(lái)看看吧,希望對(duì)大家 學(xué)習(xí)python 有所幫助。
  Linux 操作系統(tǒng)提供了一個(gè) fork() 函數(shù)用來(lái)創(chuàng)建子進(jìn)程,這個(gè)函數(shù)很特殊,調(diào)用一次,返回兩次,因?yàn)椴僮飨到y(tǒng)是將當(dāng)前的進(jìn)程(父進(jìn)程)復(fù)制了一份(子進(jìn)程),然后分別在父進(jìn)程和子進(jìn)程內(nèi)返回。子進(jìn)程永遠(yuǎn)返回0,而父進(jìn)程返回子進(jìn)程的 PID。我們可以通過(guò)判斷返回值是不是 0 來(lái)判斷當(dāng)前是在父進(jìn)程還是子進(jìn)程中執(zhí)行。
  在 Python 中同樣提供了 fork() 函數(shù),此函數(shù)位于 os 模塊下。
  下面是一個(gè)例子
  import os
  import time
  print "Before fork process pid=%s, ppid=%s" % (os.getpid(), os.getppid())
  pid = os.fork()if pid == 0:
  print "I am child process pid=%s, ppid=%s" % (os.getpid(), os.getppid())
  time.sleep(5)else:
  print "I am parent process pid=%s, ppid=%s" % (os.getpid(), os.getppid())
  time.sleep(5)
  # 下面的內(nèi)容會(huì)被打印兩次,一次是在父進(jìn)程中,一次是在子進(jìn)程中。print "After fork process pid=%s, ppid=%s" % (os.getpid(), os.getppid())
  運(yùn)行結(jié)果如下:
  Before fork process pid=18595, ppid=25925
  I am parent process pid=18595, ppid=25925
  I am child process pid=18596, ppid=18595
  After fork process pid=18595, ppid=25925
  After fork process pid=18596, ppid=18595
  最后,由于 fork() 是 Linux 上的概念,所以如果要跨平臺(tái),最好還是使用 subprocess 模塊來(lái)創(chuàng)建子進(jìn)程。
來(lái)源:kongxx的專欄
您還未登錄,請(qǐng)先登錄

熱門(mén)帖子

最新帖子

?