5

別の Python スクリプトを呼び出す Python スクリプトがあります。他の python スクリプト内では、いくつかのスレッドが生成されます。呼び出されたスクリプトの実行が完全に完了するまで、呼び出し元のスクリプトを待機させるにはどうすればよいですか?

これは私のコードです:

while(len(mProfiles) < num):
        print distro + " " + str(len(mProfiles))
        mod_scanProfiles.main(distro)
        time.sleep(180)
        mProfiles = readProfiles(mFile,num,distro)
        print "yoyo"

mod_scanProfiles.main() とすべてのスレッドが完全に終了するまで待つにはどうすればよいですか? (今のところ time.sleep(180) を使用しましたが、プログラミングの習慣が良くありません)

4

1 に答える 1

7

mod_scanProfiles.mainすべてのスレッドが終了するまでブロックするようにコードを変更します。

subprocess.Popenその関数で呼び出しを行うと仮定すると、次のようになります。

# in mod_scanPfiles.main:
p = subprocess.Popen(...)
p.wait() # wait until the process completes.

スレッドが終了するのを現在待っていない場合は、Thread.join( docs ) を呼び出してスレッドが完了するのを待つこともできます。例えば:

# assuming you have a list of thread objects somewhere
threads = [MyThread(), ...]
for thread in threads:
    thread.start()
for thread in threads:
    thread.join()
于 2012-08-09T13:10:05.073 に答える