以下のコードを使用して、マルチプロセッシングのプロセス関数を使用して2つの関数を同時に実行するのは難しいです。最後に私の努力は、スクリプトの本体から照合されるタイマーを実行することです。時間が完了している場合は、本体の依存関係よりも独自のアクションがトリガーされます。時間が完了していなければ、次のアクションに移ります。Python 3複数の関数を同時に実行する
私はビルドとMacBook Proの上でこれを実行している: プロセッサ名:インテルCore 2 Duoプロセッサ プロセッサ速度:コアの1 総数:2
スクリプト2.66 GHzのプロセッサの 数:
#!/usr/bin/pyton
# MODULES
import time
from multiprocessing import Process
# GLOBAL VARIABLES
Completion = ''
# FUNCTIONS
def Timer(duration):
global Completion
Ticker = 0
while Ticker != duration:
Ticker = Ticker + 1
print(Ticker)
time.sleep(1)
Completion = '{0}TickerDone'.format(duration)
def Wait(seconds):
time.sleep(seconds)
#MAIN
P1 = Process(target = Timer(10))
P1.start()
P2 = Process(target = Wait(11))
P2.start()
P1.join()
P2.join()
print(Completion)
if Completion == '10TickerDone':
print('Good to go!\n')
else:
print('Not yet!\n')
# END
二つの機能が除外されて何をすべきか、しかし、最初の関数の完了を10 + 1 secondardsを待つように意図された第二の機能は、のみ、最初の関数たら10秒タイマーを開始し、あります完了しました。要するに、私は10秒タイマーをテストするために21秒待たなければなりません。
結果:最初の関数は、第三の機能を実行する前に終了した場合には、第2の機能をテストすることができますので、私がする必要がどのような
$ python Test.py
1
2
3
4
5
6
7
8
9
10
10TickerDone
Good to go!
は、並行して、これらの二つの機能を実行しています。
どこが間違っていますか?
ノートのドキュメントは、私はスレッドでプロセスを置き換える、スレッドと同じことをしようとしますが、同じ結果を持っています。 – danjmwalker
こんにちはマーク、私はあなたがそれを書いてみましたが、私は同じ結果を得ています。 – danjmwalker
'P1 = Process(target = Timer(10)、args =(10、)) P1.start() P2 =プロセス(ターゲット=待機、args =(11)) P2.start – danjmwalker