Building on the answer of Thomas Wouters, python does not register a handler for the SIGTERM signal. We can see this by doing:
In[23]: signal.SIG_DFL == signal.signal(signal.SIGTERM,signal.SIG_DFL)
Out[23]: True
That means that the system will take the default action. On linux, the default action (according to the signal man page) for a SIGTERM is to terminate the process.
Terminating a process means that:
-
the process will simply not be allocated any more time slices during which it can execute code.
- This means that it will not raise an exception, or call the code in try: finally: blocks, or the
__exit__
method of context managers. It will not do those things because that particular python interpreter will never get the chance to execute another instruction.
- This means that it will not raise an exception, or call the code in try: finally: blocks, or the
-
The process’s memory and other resources (open files, network sockets, etc…) will be released back to the rest of the system.