How to kill a subprocess in Python

In this tutorial, we will show you how to kill a subprocess using Python

Updated March 29, 2023

Hello and welcome to this beginner’s tutorial on how to kill a subprocess in Python. A subprocess is a process that is launched and controlled by another process. In this tutorial, we will show you how to kill a subprocess using Python.

Method 1: Using the subprocess.Popen() Function

The subprocess.Popen() function in Python is used to launch a new process. It returns a Popen object that represents the running process. We can use this object to send signals to the process, such as the SIGTERM signal, which is used to gracefully terminate a process. Here’s an example:

# Using the subprocess.Popen() function
import subprocess

proc = subprocess.Popen(['ping', 'google.com'])

# ... do some work ...

proc.terminate()

In this code, we use the subprocess.Popen() function to launch the ping command with the argument google.com. This command will run indefinitely until it is terminated. We then do some work, and finally call the terminate() method on the proc object to gracefully terminate the process.

Method 2: Using the os.kill() Function

The os.kill() function in Python is used to send a signal to a process. We can use this function to send the SIGTERM signal to a subprocess, which will gracefully terminate the process. Here’s an example:

# Using the os.kill() function
import subprocess
import os

proc = subprocess.Popen(['ping', 'google.com'])

# ... do some work ...

os.kill(proc.pid, signal.SIGTERM)

In this code, we use the subprocess.Popen() function to launch the ping command with the argument google.com. We then do some work, and finally use the os.kill() function to send the SIGTERM signal to the process, which will gracefully terminate it.

Method 3: Using the subprocess.run() Function

The subprocess.run() function in Python is used to run a command and wait for it to complete. We can use this function to run a command and terminate it if it does not complete within a certain amount of time. Here’s an example:

# Using the subprocess.run() function
import subprocess
import time

proc = subprocess.Popen(['ping', 'google.com'])

# Wait for 5 seconds
time.sleep(5)

# Terminate the process if it is still running
if proc.poll() is None:
    proc.terminate()

In this code, we use the subprocess.Popen() function to launch the ping command with the argument google.com. We then wait for 5 seconds using the time.sleep() function. Finally, we check if the process is still running using the proc.poll() method, and if it is, we call the terminate() method on the proc object to gracefully terminate the process.

Conclusion

In this tutorial, we have shown you three different methods to kill a subprocess in Python. We have covered using the subprocess.Popen() function, the os.kill() function, and the subprocess.run() function. It’s important to choose the right method that suits your needs and the context in which you’re working.

Keep practicing these methods and try to use them in your own projects. Remember that practice makes perfect, and the more you practice, the better you will get at Python programming. Thank you for reading, and happy coding!

Hey! Do you love Python? Want to learn more about it?
Let's connect on Twitter or LinkedIn. I talk about this stuff all the time!