如何完成主线程?

时间:2017-05-30 02:50:07

标签: python multithreading python-3.x python-multithreading finalizer

有没有办法在python进程的主线程关闭时执行函数(通常或带有未捕获的异常)?

我希望[PdfSharp][1]能够提供该功能,但显然当主线程终止时它不会被调用 - 仅当所有线程终止时。因此,此代码无法正常工作:

Package Manage Console

我不想将子线程作为守护程序线程启动,因为我希望它在终止之前有机会自行清理。

我现在能想到的唯一解决方案是定期检查(从子线程或专用线程)主线程是否仍然存活,如果没有,则运行我需要的函数。

1 个答案:

答案 0 :(得分:1)

一个想法是让另一个线程join成为主线程,然后进行清理:

def cleanup_on_main_thread_exit():
    threading.main_thread().join()
    do_whatever()

threading.Thread(target=cleanup_on_main_thread_exit).start()