2016-11-19 10 views
0

使用Pythonプログラミング言語を使用して2つの子プロセスを作成します。は、Python(Windowsの場合)、次のタスクを達成するために

(のは、P1とP2それらを呼びましょう)二つのプロセスを作成します。 P1は「私はP1です」と印刷し、P2は「私はP2です」と印刷します。メインプロセス(P1とP2を作成するプロセス)はそれらを待つ必要があります。次に、P1とP2が完了した後、メインプロセスは「私はメインプロセスです.2つのプロセスが完了しました」と印刷する必要があります。

+0

何を試しましたか?これは宿題のようです。次のhttp://stackoverflow.com/help/how-to-ask – Enkode

+0

をお読みください。あなたの試行を示す必要があります。 Stackoverflowはプログラミングコミュニティであり、宿題のコミュニティではありません。とにかく、私はあなたを助けるために以下の答えを書いた –

答えて

0

最初にWindowsタグを認識しませんでした。だから私はUNIXによると書きました。私の代わりに、それはUNIXユーザを支援することを望んで削除するの答えを保持too.The同じことを実証し、適切なコードがある: -

import os 
import time 

def child(id, sleepTime): 
    print "I'm P"+str(id) 
    time.sleep(sleepTime) 
    os._exit(0) 
p1=os.fork() 
if (p1==0): 
    child(1,3) #P1 sleeps for 3 seconds 
p2=os.fork() 
if (p2==0): 
    child(2,5) #P2 sleeps for 5 seconds 
if (p1>0 and p2>0): 
    os.waitpid(p1,0) #Waiting for child 1 
    os.waitpid(p2,0) #Waiting for child2 
    print "I am the main process, the two processes are done" #Printed after approx 5 seconds 

私は期待通りに出力された

time python fork.py 

を実行: -

Windowsで
I'm P1 
I'm P2 
I am the main process, the two processes are done 

real 0m5.020s 
user 0m0.004s 
sys 0m0.008s 
+0

この質問のWindowsのタグを見ていない?サブプロセスモジュールを使用します。 – eryksun

0

、我々はforkシステムコールを持っていないので、我々は、マルチプロセッシングと呼ばれるPythonモジュールを使用することができます -

タスクマネージャに捕捉さの
from multiprocessing import Process, Lock 
import time 
import os 
def f(lock,id,sleepTime): 
    lock.acquire() 
    print "I'm P"+str(id)+" Process ID: "+str(os.getpid()) 
    lock.release() 
    time.sleep(sleepTime) #sleeps for some time 

if __name__ == '__main__': 
    print "Main Process ID: "+str(os.getpid()) 
    lock=Lock() 
    p1=Process(target=f, args=(lock,1,3,)) #P1 sleeps for 3 seconds 
    p2=Process(target=f, args=(lock,2,5,)) #P2 sleeps for 5 seconds 
    start=time.time() 
    p1.start() 
    p2.start() 
    p1.join() 
    p2.join() 
    end=time.time() 
    print "I am the main process, the two processes are done" 
    print "Time taken:- "+str(end-start)+"secs" #MainProcess terminates at approx ~ 5 secs. 

工程: - P1,P2 and Main Processコード出力した: -

Main Process ID: 9804 
I'm P1 Process ID: 6088 
I'm P2 Process ID: 4656               
I am the main process, the two processes are done 
Time taken:- 5.15300011635secs 

役立つホープ!

関連する問題