溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中fock()函數(shù)的使用方法

發(fā)布時(shí)間:2020-08-07 10:11:31 來(lái)源:億速云 閱讀:158 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)Python中fock()函數(shù)的使用方法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

首先,在python中我們要實(shí)現(xiàn)多進(jìn)程,有兩個(gè)模塊可以用:
1)os中的fork()函數(shù)
2)multiprocessing模塊

fork()函數(shù)

函數(shù)原型:

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()函數(shù)原型來(lái)看,它也屬于一個(gè)內(nèi)建函數(shù)。 

子進(jìn)程永遠(yuǎn)返回0,而父進(jìn)程返回子進(jìn)程的ID。這樣做的理由是,一個(gè)父進(jìn)程可以fork()出很多子進(jìn)程,所以,父進(jìn)程要記下每個(gè)子進(jìn)程的ID,而子進(jìn)程只需要調(diào)用getppid()就可以拿到父進(jìn)程的ID。

Python的進(jìn)程函數(shù)fork()是在os模塊,下面是一個(gè)關(guān)于進(jìn)程的例子:

import os
print os.getpid() #獲取子進(jìn)程的進(jìn)程號(hào)
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)

執(zhí)行結(jié)果:

1526
I (1526) just created a child process (1527).
I am child process (1527) and my parent is 1526.

有了fork調(diào)用,一個(gè)進(jìn)程在接到新的任務(wù)時(shí),就可以復(fù)制出一個(gè)子進(jìn)程來(lái)處理新任務(wù)。常見(jiàn)的Apache服務(wù)器就是由父進(jìn)程監(jiān)聽(tīng)端口,一旦有新的http請(qǐng)求時(shí),就fork出子進(jìn)程來(lái)處理新的http請(qǐng)求。 

再看一個(gè)例子:

#coding=utf-8
import os
os.fork()
print 1

執(zhí)行結(jié)果:

1
1

程序中,父進(jìn)程中創(chuàng)建了一個(gè)子進(jìn)程,子進(jìn)程運(yùn)行打印了一個(gè)1,回到父進(jìn)程又打印了一個(gè)1,所以結(jié)果是打印了2個(gè)1。

注意:

上面創(chuàng)建進(jìn)程的函數(shù)都是Unix/Linux下的,Windows下是沒(méi)有的,那在Windows下又使用什么實(shí)現(xiàn)多進(jìn)程呢? 

由于Python是跨平臺(tái)的,自然也應(yīng)該提供一個(gè)跨平臺(tái)的多進(jìn)程支持。multiprocessing模塊就是跨平臺(tái)版本的多進(jìn)程模塊, 支持子進(jìn)程、通信和共享數(shù)據(jù)、執(zhí)行不同形式的同步。 

multiprocessing模塊提供了一個(gè)Process類來(lái)創(chuàng)建一個(gè)新的進(jìn)程對(duì)象。

感謝各位的閱讀!關(guān)于Python中fock()函數(shù)的使用方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI