2011-07-19 9 views
18

En python, ¿hay alguna manera de invocar un nuevo proceso, darle el mismo contexto, como flujos de E/S estándar, cerrar el proceso actual y dar control al proceso invocado? Esto efectivamente 'reemplazará' el proceso.Reemplazar el proceso actual con la invocación del subproceso?

Tengo un programa cuyo comportamiento quiero repetir. Sin embargo, utiliza una biblioteca de terceros, y parece que la única forma en que realmente puedo matar los hilos invocados por esa biblioteca es salir() de mi proceso de python.

Además, parece que podría ayudar a administrar la memoria.

Respuesta

22

Usted puede estar interesado en os.execv() y amigos:

Todas estas funciones ejecutar un nuevo programa, reemplazando el actual proceso ; ellos no vuelven En Unix, el nuevo ejecutable se carga en el proceso actual, y tendrá el mismo ID de proceso que el llamador . Los errores se informarán como excepciones OSError.

+7

Tenga en cuenta que una llamada se parecería a 'os.execvp ('python.exe', ['python.exe', 'arg1', 'arg2'])'. Tenga en cuenta que el '' python.exe' algo contraintuitivo 'aparece dos veces. Ver [esta respuesta] (http://stackoverflow.com/a/18552137/1143274) para más detalles. –

Cuestiones relacionadas