J'ai essayé ces deux méthodes:Comment lancer et exécuter un script externe en arrière-plan?
os.system("python test.py")
subprocess.Popen("python test.py", shell=True)
Les deux approches doivent attendre test.py fin du processus principal qui bloque. Je sais que "nohup" peut faire le travail. Existe-t-il un moyen Python de lancer test.py ou tout autre script shell et de le laisser fonctionner en arrière-plan?
test.py Supposer comme ceci:
for i in range(0, 1000000):
print i
deux os.system() ou subprocess.Popen() bloquera programme principal jusqu'à ce que 1000000 lignes de sortie affichées. Ce que je veux c'est laisser tester.py s'exécuter en silence et afficher la sortie du programme principal uniquement. Le programme principal peut s'arrêter pendant que test.py est toujours en cours d'exécution.
subprocess.Popen ([ "python", "test.py"]) lance simplement test.py et blocs processus principal en attendant la sortie de test.py. – jack
Cela ne devrait se produire que si vous demandez 'stdout = PIPE'. Quelle version de Python? Pouvez-vous ajouter un 'print 'xxx" 'après l'appel à Popen pour vérifier qu'il bloque vraiment? –
Je viens de tester le code ci-dessus et cela fonctionne pour moi avec Python 2.5.2 sous Windows. Votre problème doit être autre chose. –