2010-08-29 5 views
4

Mon script python doit démarrer un processus d'arrière-plan et continuer le traitement jusqu'à la fin sans attendre de retour.Démarrer un script python en tant que processus d'arrière-plan à partir d'un script python

Le script d'arrière-plan va traiter pendant un certain temps et ne générera aucune sortie d'écran.

Aucune donnée inter-processus n'est requise.

J'ai essayé d'utiliser différentes méthodes de sous-processus, de multiprocessing mais il me manque clairement quelque chose.

Est-ce que quelqu'un a un exemple simple?

TIA

Répondre

3

que diriez-vous:

import subprocess 
from multiprocessing import Process 

Process(target=subprocess.call, args=(('ls', '-l',),)).start() 

Il est pas du tout élégant, mais il répond à toutes vos exigences.

1

Il y a une belle writeup des différentes pièces/parties sur la façon de le faire à Calling an external command in Python (par @lecodesportif).

L'essentiel d'une réponse rapide est:

retcode = subprocess.call(["ls", "-l"]) 
+0

Il échoue l'exigence "sans attente". –

+1

Ah - mon mauvais, j'ai raté cela dans la lecture. Vous avez tout à fait raison. La réponse de Stefano devrait faire ce que vous voulez ensuite. – heckj

+0

Qu'en est-il de quelque chose comme: 'retcode = subprocess.call ([" ls -l & "], shell = Vrai)'. Ça marche pour moi. – SunSparc

2

simple:

subprocess.Popen(["background-process", "arguments"]) 

Si vous voulez vérifier plus tard si le processus d'arrière-plan a terminé son travail, conserver une référence à l'objet Popen et utilisez la méthode poll().

Questions connexes