您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在Python項目中使用fork()函數,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
fork()函數
函數原型:
Help on built-in function fork in module posix: fork(...) fork() -> pid Fork a child process. Return 0 to child process and PID of child to parent process.
從fork()函數原型來看,它也屬于一個內建函數。
子進程永遠返回0,而父進程返回子進程的ID。這樣做的理由是,一個父進程可以fork()出很多子進程,所以,父進程要記下每個子進程的ID,而子進程只需要調用getppid()就可以拿到父進程的ID。
Python的進程函數fork()是在os模塊,下面是一個關于進程的例子:
import os print os.getpid() #獲取子進程的進程號 pid = os.fork() if pid == 0 : print 'I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid()) else : print 'I (%s) just created a child process (%s).' % (os.getpid(), pid)
執行結果:
1526
I (1526) just created a child process (1527).
I am child process (1527) and my parent is 1526.
有了fork調用,一個進程在接到新的任務時,就可以復制出一個子進程來處理新任務。常見的Apache服務器就是由父進程監聽端口,一旦有新的http請求時,就fork出子進程來處理新的http請求。
再看一個例子:
#coding=utf-8 import os os.fork() print 1
執行結果:
1
1
程序中,父進程中創建了一個子進程,子進程運行打印了一個1,回到父進程又打印了一個1,所以結果是打印了2個1。
需要注意的是,上面創建進程的函數都是Unix/Linux下的,Windows下是沒有的,那在Windows下又使用什么實現多進程呢?
由于Python是跨平臺的,自然也應該提供一個跨平臺的多進程支持。multiprocessing模塊就是跨平臺版本的多進程模塊, 支持子進程、通信和共享數據、執行不同形式的同步。
multiprocessing模塊提供了一個Process類來創建一個新的進程對象。
關于怎么在Python項目中使用fork()函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。