Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Terminate a process created with 'subprocess.run'

How can I terminate a process created with subprocess.run in Python 3?

The documentation of subprocess.run is here, but it doesn't specify it.

The documentation of the return-value is here, but there's no hint for it in there either.

With subprocess.Popen it's easy:

p = subprocess.Popen(...)
...
p.terminate()

How can I do the same when using subprocess.run?

like image 237
goodvibration Avatar asked Oct 19 '25 00:10

goodvibration


1 Answers

you cannot, since the process returns to python interpreter only once it has ended.

You could try to get hold of the PID while running in a thread and kill it, but...

For those cases, Popen is the best solution as you can control input/output & end of your process.

From the documentation:

The underlying process creation and management in this module is handled by the Popen class. It offers a lot of flexibility so that developers are able to handle the less common cases not covered by the convenience functions.

Note that the documentation starts by describing run, then Popen, then the now deprecated check_call, check_output ... calls

like image 180
Jean-François Fabre Avatar answered Oct 20 '25 13:10

Jean-François Fabre



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!