You don't have to worry about detached threads when killing the process. They will be taken care of. When a thread started without 'detach'-ing it is still alive when your process is terminated you will get a warning that it exited with unjoined threads. My experience is mainly with Tk: in this case detached threads work fine as far as they never terminate. If they terminate while the MainLoop is still active it will crash miserably. So with Tk I always use infinite while(1){#do processing} style threads.