2010-07-30 10 views
0

Par curiosité et essayer de comprendre le module de sous-processus: Est-il possible de faire quelque chose comme:subprocess python appelant processus « interne »

import subprocess 

def myfun(arg): 
    # do stuff 

arg = something; 
p = subprocess.Popen(["myfun","arg"]) 

sans mettre « myfun » dans un fichier de son propre? Il semble que ce soit en général une chose effrayante à faire si vous ne faites pas attention à nettoyer les processus de l'enfant.

Répondre

4

Vous pouvez passer Popen un preexec_fn, qui est un objet appelable exécuté dans le processus enfant avant que la commande ne soit exécutée. Une approche plus standard consiste à utiliser le module multiprocessing, qui nécessite une fonction Python au lieu d'une commande externe.