web-dev-qa-db-ja.com

複数のpythonスクリプトを同時に実行します

複数のpythonスクリプトを実行するにはどうすればよいですか?現時点では、python script1.pyのように実行しています。

python script1.py script2.pyを試しましたが、うまくいきません。最初のスクリプトだけが実行されます。また、このような単一のファイルを使用してみました。

import script1
import script2

python script1.py
python script2.py

ただし、これも機能しません。

28
Sami

Bashの場合:

python script1.py &
python script2.py &

これがスクリプト全体です。 2つのPythonスクリプトを同時に実行します。

Pythonはそれ自体で同じことを行うことができますが、より多くのタイピングが必要になり、当面の問題には悪い選択です。

あなたはあなたの問題を解決するために間違ったアプローチを取っている可能性があると思いますが、私はあなたが何を得ているのか聞きたいです。

46

2つのPythonプロセスを同時に実行する最も簡単な解決策は、bashファイルからそれらを実行し、& Shellオペレーターを使用して各プロセスにバックグラウンドに入るように指示することです。

python script1.py &
python script2.py &

多くのプロセスを並行して実行するためのより制御された方法については、 Supervisorプロジェクト を調べるか、 multiprocessing module を使用してPython内からオーケストレーションを行います。

21
logc

私はこれをしなければならず、サブプロセスを使用しました。

import subprocess

subprocess.run("python3 script1.py & python3 script2.py", Shell=True)
3
user2757128

Gnu-Parallel を使用して、コマンドを同時に実行できます。Windows、Linux/Unixで動作します。

parallel ::: "python script1.py" "python script2.py"

0
I Am Batman

Node.js(Windows 10)でこれを行うには、2つの個別のcmdインスタンスを開き、各インスタンスで各プログラムを実行します。

これには、各スクリプトのコンソールへの書き込みが簡単に見えるという利点があります。

pythonで同じことができることがわかります:2シェル。

IDLE/Python Shellの複数のインスタンスを同時に実行できます。そのため、IDLEを開いてサーバーコードを実行し、IDLEを再度開きます。これにより、別のインスタンスが開始され、クライアントコードが実行されます。

0
D.L

Windows 7でPython IDLEを使用しています。私は2つのプログラムを持っています

# progA
while True:
    m = input('progA is running ')
    print (m)

そして

# progB
while True:
    m = input('progB is running ')
    print (m)

IDLEを開き、ファイルprogA.pyを開きます。プログラムを実行し、入力を求められたら"b" + <Enter>を入力してから"c" + <Enter>を入力します

私はこのウィンドウを見ています:

Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
= RESTART: C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\progA.py =
progA is running b
b
progA is running c
c
progA is running 

次に、Windowsスタートに戻り、IDLEを再度開きます。今回はprogB.pyファイルを開きます。プログラムを実行し、入力を求められたら"x" + <Enter>を入力してから"y" + <Enter>を入力します

私はこのウィンドウを見ています:

Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
= RESTART: C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\progB.py =
progB is running x
x
progB is running y
y
progB is running 

2つのIDLE Python 3.6.3シェルプログラムが同時に実行され、1つのシェルがprogAを実行し、もう1つのシェルがprogBを実行しています。

0
CopyPasteIt