使用Pythonプログラミング言語を使用して2つの子プロセスを作成します。は、Python(Windowsの場合)、次のタスクを達成するために
(のは、P1とP2それらを呼びましょう)二つのプロセスを作成します。 P1は「私はP1です」と印刷し、P2は「私はP2です」と印刷します。メインプロセス(P1とP2を作成するプロセス)はそれらを待つ必要があります。次に、P1とP2が完了した後、メインプロセスは「私はメインプロセスです.2つのプロセスが完了しました」と印刷する必要があります。
使用Pythonプログラミング言語を使用して2つの子プロセスを作成します。は、Python(Windowsの場合)、次のタスクを達成するために
(のは、P1とP2それらを呼びましょう)二つのプロセスを作成します。 P1は「私はP1です」と印刷し、P2は「私はP2です」と印刷します。メインプロセス(P1とP2を作成するプロセス)はそれらを待つ必要があります。次に、P1とP2が完了した後、メインプロセスは「私はメインプロセスです.2つのプロセスが完了しました」と印刷する必要があります。
最初に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
この質問のWindowsのタグを見ていない?サブプロセスモジュールを使用します。 – eryksun
、我々は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.
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
役立つホープ!
何を試しましたか?これは宿題のようです。次のhttp://stackoverflow.com/help/how-to-ask – Enkode
をお読みください。あなたの試行を示す必要があります。 Stackoverflowはプログラミングコミュニティであり、宿題のコミュニティではありません。とにかく、私はあなたを助けるために以下の答えを書いた –