将`thread.start_new_thread(...)`转换为新的线程API

dea*_*mon 5 python multithreading

当我使用旧的Python threadAPI时,一切正常:

thread.start_new_thread(main_func, args, kwargs)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用新的线程 API,那么运行该线程的进程在它应该退出自身时会挂起sys.exit(3):

threading.Thread(target=main_func, args=args, kwargs=kwargs).start()
Run Code Online (Sandbox Code Playgroud)

如何将代码转换为新的线程API?

您可以在上下文中看到此示例.

suz*_*kya 8

此行为是由于thread.start_new_threaddaemon模式下threading.Thread创建线程时创建线程的事实non-daemon.
threading.Thread以守护进程模式启动,您需要使用以下.setDaemon方法:

my_thread = threading.Thread(target=main_func, args=args, kwargs=kwargs)
my_thread.setDaemon(True)
my_thread.start()
Run Code Online (Sandbox Code Playgroud)