web-dev-qa-db-fra.com

Exécuter plusieurs scripts python simultanément

Comment puis-je exécuter plusieurs scripts python? En ce moment, j'en lance un comme python script1.py.

J'ai essayé python script1.py script2.py et cela ne fonctionne pas: seul le premier script est exécuté. De plus, j'ai essayé d'utiliser un seul fichier comme celui-ci;

import script1
import script2

python script1.py
python script2.py

Cependant, cela ne fonctionne pas non plus.

18
Sami

Avec Bash: 

python script1.py &
python script2.py &

C'est le script entier. Il exécutera les deux scripts Python en même temps.

Python pourrait faire la même chose, mais cela demanderait beaucoup plus de dactylographie et constituerait un mauvais choix pour le problème à résoudre.

Je pense qu'il est toutefois possible que vous adoptiez la mauvaise approche pour résoudre votre problème, et j'aimerais savoir où vous voulez en venir.

37
Christopher Peterson

La solution la plus simple pour exécuter simultanément deux processus Python consiste à les exécuter à partir d'un fichier bash et d'indiquer à chaque processus de passer en arrière-plan avec l'opérateur & Shell.

python script1.py &
python script2.py &

Pour une manière plus contrôlée d'exécuter plusieurs processus en parallèle, examinez le projet Supervisor ou utilisez le module multiprocessing pour orchestrer depuis Python.

16
logc

Vous pouvez utiliser Gnu-Parallel pour exécuter des commandes simultanément, fonctionne sous Windows, Linux/Unix.

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

0
I Am Batman

Je le fais dans node.js (sous Windows 10) en ouvrant 2 instances distinctes de cmd et en exécutant chaque programme dans chaque instance.

Cela présente l'avantage que l'écriture sur la console est facilement visible pour chaque script.

Je vois qu'en python on peut faire la même chose: 2 coquilles.

Vous pouvez exécuter plusieurs instances de IDLE/Python Shell en même temps. Ouvrez donc IDLE et exécutez le code serveur, puis ouvrez IDLE à nouveau, ce qui démarrera une instance distincte puis exécutera votre code client.

0
D.L

Je travaille dans Windows 7 avec Python IDLE. J'ai deux programmes,

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

et

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

J'ouvre IDLE puis le fichier progA.py. J'exécute le programme et lorsque je suis invité à entrer, je saisis "b" + <Enter>, puis "c" + <Enter>

Je regarde cette fenêtre:

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 

Ensuite, je retourne à Windows Start et rouvre IDLE, en ouvrant le fichier progB.py. J'exécute le programme et lorsque je suis invité à entrer, je saisis "x" + <Enter>, puis "y" + <Enter>

Je regarde cette fenêtre:

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 

Maintenant, deux programmes shell IDLE Python 3.6.3 s'exécutent en même temps, l'un exécutant progA tandis que l'autre exécute progB.

0
CopyPasteIt