Matando un subproceso sale del progtwig Python

def playvid(self): proc1 = subprocess.Popen("gst-launch-1.0 videotestsrc ! autovideosink", shell=True) time.sleep(3) os.killpg(os.getpgid(proc1.pid),signal.SIGTERM) 

Se llama a esta función cuando presiono un botón (creado con la biblioteca TK). Después de 3 segundos, mi progtwig completo (junto con la pantalla GUI) muere en lugar de solo el subproceso. ¿Cómo puedo rectificar esto y asegurarme de que solo se elimine el subproceso proc1?

Si lees la documentación del subproceso, hay varios métodos para elegir:

Popen.send_signal (señal)

Envía la señal de señal al niño.

En Windows, SIGTERM es un alias para terminate ().

Popen.terminate ()

Detén al niño. En los sistemas operativos Posix, el método envía SIGTERM al niño. En Windows, se llama a la función de la API de Win32 TerminateProcess () para detener al hijo.

Popen.kill ()

Mata al niño. En los sistemas operativos Posix, la función envía SIGKILL al niño. En Windows, kill () es un alias para terminate ().

Yo usaría:

 proc1.terminate()