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.
The process's memory and other resources (open files, network sockets, etc...) will be released back to the rest of the system.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…