Hi, I have a script (see below) that I want to terminate after X seconds. The main loop of the program is waiting for user input. The program enters the main loop and I try to shut down the program after X seconds from a thread but I can't figure out how to do it. The program should also do some cleanup before termination, so the shut down must be graceful.
The code below is a simplified version. The whole idea is the following: I have a script that has grown quite big over time. It needs to read several data files, so when I start it for the first time, it takes about 3-4 seconds to launch. The next start is much faster since, I guess, the OS has done some caching. I use this script a lot and the first slow launch bothers me. My idea: after booting, I want to start the script in the background in suicide mode. OS does the caching, so when I need it, it starts quickly. See the code below with comments. Thanks, Laszlo =============== import atexit import sys import time from threading import Thread import os def suicide(wait): time.sleep(wait) print("should exit now...") sys.exit() # exits this thread but not the main thread # os._exit(0) # no cleanup with this :( def cleanup(): # I want it to run before termination. print("cleaning up...") def main(): Thread(target=suicide, kwargs={'wait': 3}).start() # while True: try: inp = raw_input("in> ") print(inp) except (KeyboardInterrupt, EOFError): print() sys.exit() ##### if __name__ == "__main__": atexit.register(cleanup) main() -- https://mail.python.org/mailman/listinfo/python-list