1

別のスクリプトを開く必要があるスクリプトを作成していますが、両方のスクリプトが同時に実行されるようにメイン スクリプトの実行を続けます。

試してみましexecfile()たが、ファイルが開きません。使用するos.system(somefile.py)と、コンソール経由で .py ファイルが正常に開きますが、すぐに閉じます。メインの python スクリプト内で python スクリプトを実行できますが、両方のプロセスを互いに競合させることなく同時に実行するための代替手段はありますか?

私がテストしたサンプルコードは次のとおりです。

import os
file_path = 'C:\\Users\\Tyler\\Documents\\Multitask Bot\\somefile.py'

def main():
    os.system(file_path)

if __name__ == '__main__':
    main()
4

3 に答える 3

3

execfile()os.system()子が終了するまで親プロセスをブロックします。使用subprocess.Popen()、例えば

import subprocess, time
file_path = 'C:\\Users\\Tyler\\Documents\\Multitask Bot\\somefile.py'

def main():
    child = subprocess.Popen(['python', file_path])
    while child.poll() is None:
        print "parent: child (pid = %d) is still running" % child.pid
        # do parent stuff
        time.sleep(1)
    print "parent: child has terminated, returncode = %d" % child.returncode

if __name__ == '__main__':
    main()

これは、それを処理する 1 つの方法にすぎません。子から stdout や stderr を収集し、場合によってはデータを子の stdin に送信したい場合があります。subprocess モジュールを読んでください。

于 2012-07-27T00:12:29.787 に答える
2

別のスクリプトを同時に実行したい場合は、subprocessモジュールを検討してください。

于 2012-07-26T23:43:39.407 に答える
0

あなたの問題は、そのファイルが実行されていないことである可能性がありC:\\Users\\Tyler\\Documents\\Multitask Bot\\ ます。ローカル インポートが失敗する場合があります。

os.chdir('C:\\Users\\Tyler\\Documents\\Multitask Bot\\')前に実行してみてくださいos.system

于 2012-07-27T00:17:47.183 に答える