根据官方的Python文档,
在应用程序中存在线程的情况下,preexec_fn参数不安全使用。在调用exec之前,子进程可能会死锁。如果您必须使用它,请保持琐碎!最小化您要调用的库的数量。
如果您需要为孩子修改环境,请使用env参数,而不要在preexec_fn中使用它。start_new_session参数可以代替preexec_fn以前在子级中调用os.setsid()的常用用法。
因此,我想您的问题的答案start_new_session
是引入该方法来代替用于通过preexec_fn
设置会话ID的常见操作os.setsid()
,这不是线程安全的。