- The Many Ways to Exit in Python
- 1. raise SystemExit()
- 3. exit() and quit()
- 4. Ctrl-D (from the REPL)
- 5. os._exit()
- ✨Bonus✨ 6. Directly calling the OS exit function
- Fin
- Process Exit Codes in Python
- Need Process Exit Codes
- How to Use Exit Codes in Python
- How to Set an Exit Code
- Complete python exit tutorial with examples in 2023
- Types of python exit function
- Python exit() function
- Python exit(0)
- Python exit(1)
- Python quit() function
- Python sys.exit() function
- python os._exit() function
- Python exit vs quit
- Python exit with an error
- Python exit from a program gracefully
- Conclusion
The Many Ways to Exit in Python
It’s fundamentally useful to exit your program when it’s done. Here are five(!) ways to do so in Python.
1. raise SystemExit()
We can exit from Python code by raising a SystemExit exception:
The top level interpreter catches this special exception class and triggers its exit routine. This includes such steps as running all atexit functions, deleting all objects, and finally calling the OS exit function.
SystemExit optionally takes an integer for the exit code, where 0 represents success and any other value represents failure. We can use this to signal calling programs that an error occurred:
(When Python crashes with an exception, it uses an exit code of 1.)
If you’re looking for a quick answer, you can stop reading here. Use raise SystemExit(<code>) as the obviousest way to exit from Python code and carry on with your life.
More obscurely, we can pass SystemExit any object, in which case Python will print the str() of that object to stderr and return an exit code of 1:
This can be handy, but I’d argue being explicit is clearer:
We can also call sys.exit() to exit Python, optionally with an exit code:
Underneath this only does raise SystemExit(<arg>) (in C).
Whilst sys.exit() is a little less typing than raise SystemExit() , it does require the import, which is a bit inconvenient. Also it hides the detail that an exception is raised.
3. exit() and quit()
exit() and quit() are “extra builtins” added by Python’s site module. Both essentially call raise SystemExit() , optionally with an exit code, like:
This looks super convenient! We don’t need to import anything, and the names are very short.
Unfortunately, the site module is optional. We can be skip loading it by running Python with the -S flag. In which case our call to quit() or exit() can still exit, but with a NameError exception:
python -S -c ", line 1, in <module>
Because exit() and quit() are optional, I’d recommend avoiding using them in your programs. But they’re fine to use at the REPL, which is why they exist. They even print usage information when written without brackets, to help new users trying to exit the REPL:
4. Ctrl-D (from the REPL)
Ctrl-D is the universal keyboard shortcut for exit. It sends EOF (End of File) to the current program, telling it the user is done sending input and it should exit.
Ctrl-D works with every command line program, including python . So it’s best to learn this shortcut, rather than use the Python-specific exit() . Then you can exit bash , zsh , ipython , sqlite , and any other command line program, without giving it a second thought.
5. os._exit()
The os._exit(n) function exits Python immediately with the given exit code n . It does so by calling the underlying OS exit function directly.
Unlike raising SystemExit , using os._exit() prevents Python from running its normal exit process. This is very destructive and usually undesirable, hence the “private/danger” underscore prefx.
The only reason I’ve found for calling os._exit() is when debugging in cases where raising SystemExit doesn’t work. For example, in a thread, raising SystemExit does not exit the progarm — it only stops the thread. Directly calling os._exit() can stop the entire program, which can be combined with a few well-placed debug prints to inspect state.
So, it’s worth knowing that os._exit() exists, although you should avoid it in day-to-day life.
✨Bonus✨ 6. Directly calling the OS exit function
os._exit() is a thin wrapper around our OS’ underlying exit function. We can call this function directly through Python’s ctypes module. This doesn’t confer any advantage — in fact it’s worse, because our code won’t work on all OSs. But it’s cool to know about.
On Linux/macOS/other Unixes, the exit function is available in the C standard library as exit() . We see its details by running man 3 exit — the Linux man page is online here. We can call it with ctypes like so:
Fin
Thanks to Anthony Sottile for the tip to use raise SystemExit(. ) in this video.
I hope you have found the exit you’re looking for,
If your Django project’s long test runs bore you, I wrote a book that can help.
One summary email a week, no spam, I pinky promise.
Tags: python © 2021 All rights reserved. Code samples are public domain unless otherwise noted.
Process Exit Codes in Python
You can set an exit code for a process via sys.exit() and retrieve the exit code via the exitcode attribute on the multiprocessing.Process class.
In this tutorial you will discover how to get and set exit codes for processes in Python.
Need Process Exit Codes
A process is a running instance of a computer program.
Every Python program is executed in a Process, which is a new instance of the Python interpreter. This process has the name MainProcess and has one thread used to execute the program instructions called the MainThread. Both processes and threads are created and managed by the underlying operating system.
Sometimes we may need to create new child processes in our program in order to execute code concurrently.
Python provides the ability to create and manage new processes via the multiprocessing.Process class.
In multiprocessing, we may need to report the success or failure of a task executed by a child process to other processes.
This can be achieved using exit codes.
What are exit codes and how can we use them between processes in Python?
Run your loops using all CPUs, download my FREE book to learn how.
How to Use Exit Codes in Python
An exit code or exit status is a way for one process to share with another whether it is finished and if so whether it finished successfully or not.
The exit status of a process in computer programming is a small number passed from a child process (or callee) to a parent process (or caller) when it has finished executing a specific procedure or delegated task.
— Exit status, Wikipedia.
An exit code is typically an integer value to represent success or failure of the process, but may also have an associated string message.
Let’s take a closer look at how we might set an exit code in a process and how another process might check the exit code of a process.
How to Set an Exit Code
A process can set the exit code automatically or explicitly.
For example, if the process exits normally, the exit code will be set to zero. If the process terminated with an error or exception, the exit code will be set to one.
A process can also set its exit code when explicitly exiting.
This can be achieved by calling the sys.exit() function and passing the exit code as an argument.
The sys.exit() function will raise a SystemExit exception in the current process, which will terminate the process.
The optional argument arg can be an integer giving the exit status (defaulting to zero), or another type of object.
— sys — System-specific parameters and functions
This function must be called in the main thread of the process and assumes that the SystemExit exception is not handled.
An argument value of 0 indicates a successful exit.
Complete python exit tutorial with examples in 2023
Python provides many exit functions using which a user can exit the python program. In this blog, we will learn everything about the python exit function. So let’s get started.
Types of python exit function
Python mainly provides four commands using which you can exit from the program and stop the script execution at a certain time. The 4 types of exit commands are:-
Python exit() function
The python exit() function is available in the site module. It is used for the exit or termination of a Python script. The exit command should not be used in production and can only be used for interpreters. Below is the sample python code with the exit function.
This gives the below output:
You can also use exit() with an argument which is the exit code, for example:
Python exit(0)
In Python, the exit(0) function is used to exit or terminate a Python script and return an exit code of 0. The exit code 0 is a standard convention to indicate that the program has terminated without errors. Below is the sample python code for exit(0)
Please note that you can also use exit() with no arguments, which is equivalent to calling sys.exit(0)
Python exit(1)
In Python, the exit(1) function is used to exit or terminate a Python script and return an exit code of 1. Exit code 1 indicates an unsuccessful termination or an error occurred during the execution of the script. Below is the sample python code for exit(1)
age = 45 if age < 50: # exit the program print(exit) exit(1)
Please note that the exit code of 1 is just a convention and you can use any other integer value to indicate different types of errors.
Python quit() function
In Python, the quit() function is equivalent to the exit() function. However, the quit() function is only available n python2 but not in python 3.Quit() function should only be used in the interpreter. Below is the sample python code which uses the quit() function.
age = 45 if age < 50: # quit the program print(quit) quit()
The above code defines a variable age as 45 and then checks if the value of age is less than 50. If it is, it will print the value of the quit function and then call the quit() function to stop the program from running.
Python sys.exit() function
In Python, the sys.exit() function is used to exit or terminate a Python script. The sys.exit() function can be used in production because it raises an SystemExit exception that causes the interpreter to exit. You can use the sys.exit() program with or without arguments. With an argument, the program will exit and return a successful exit code on 0, whereas with an argument, which is the exit code like:
import sys for i in range(1,5): print(i) if i == 3: sys.exit()
The above code will print the numbers from 1 to 3, and then the sys.exit() function will be called when the value of i is 3. This will cause the script to terminate and end the program with an exit code of 0, indicating a successful termination.
python os._exit() function
In Python, the os._exit() function is used to immediately exit the current process without performing any cleanup or finalization tasks. The os._exit() does not call any cleanup handlers, close open files, or flush stdio buffers. This can make it more efficient for exiting a program, but it also means that any necessary cleanup or finalization tasks will not be executed. It is important to consider the use of os._exit() as it may leave resources open and could cause issues when running in a multi-threaded environment.
Below is the sample python code using the os._exit() function
import os for i in range(1,5): print(i) if i == 3: os._exit(0)
After the number 3 is printed, the os._exit(0) function will be called, causing the script to immediately terminate and exit the process without printing the remaining numbers (4) in the range.
Python exit vs quit
In Python, the exit() function and quit() function are used to terminate a Python script. Both these functions raise a SystemExit exception, which causes any finally clauses in a try/finally statements to be executed and any unhandled exceptions to be logged.
exit() is a built-in function in both Python2 and Python3, while quit() is a built-in function only in Python2. In Python3 and it is recommended to use exit() or sys.exit() instead.
It’s important to ensure that any resources which the program uses, like file handlers, sockets, or database connections, are closed correctly before exiting the program using exit() or quit() with a non-zero exit code.
Python exit with an error
In Python, you can use the sys.exit() function with a non-zero exit code to exit the program and indicate that an error has occurred. For example:
import sys for i in range(1,5): if i == 3: sys.exit("Exiting,as number is equal to 3 ") print(i)
In the above code, the script will print the numbers from 1 to 2 and then exit the program when the value of i is 3. The sys.exit() function will be called, which will cause the script to terminate and end the program with an exit code of 0, indicating a successful termination. The message “Exiting, as number is equal to 3” will also be printed before the script exits.
Python exit from a program gracefully
Exiting a program gracefully refers to allowing the program to perform any necessary cleanup or finalization tasks before terminating. In Python, you can exit a program gracefully by using the sys.exit() function along with finally block to handle any necessary cleanup or finalization tasks.
For example, Below is the sample try-finally block to perform cleanup tasks before exiting the program:
def test(): try: # code to run finally: # cleanup tasks print("Cleanup Done") sys.exit(0) if __name__ == "__main__": test()
Conclusion
I hope you have liked this tutorial on the python exit function. Please do let me know if you need further inputs.