在Windows上中止python进程而不是在OS X上中止python进程的未处理异常

在Windows上中止python进程而不是在OS X上中止python进程的未处理异常,python,multithreading,unhandled-exception,Python,Multithreading,Unhandled Exception,我有一个Python服务,它在辅助线程中打开,并侦听传入的消息 当与RabbitMQ的连接断开时(例如,如果RabbitMQ死亡),将引发异常,这是应该的。我没有捕捉到异常并让它不被处理 在Windows中,当抛出异常时,进程终止,这正是我想要的。另一方面,在OSX中,只有线程死亡,进程保持运行 我怎样才能让OSX表现得像Windows,或者让Windows表现得像OSX?我不喜欢这种前后矛盾的行为 (显然,我可以自己捕获异常并终止进程,但我在询问默认行为)您描述的行为差异让我认为该线程是OS

我有一个Python服务,它在辅助线程中打开,并侦听传入的消息

当与RabbitMQ的连接断开时(例如,如果RabbitMQ死亡),将引发异常,这是应该的。我没有捕捉到异常并让它不被处理

在Windows中,当抛出异常时,进程终止,这正是我想要的。另一方面,在OSX中,只有线程死亡,进程保持运行

我怎样才能让OSX表现得像Windows,或者让Windows表现得像OSX?我不喜欢这种前后矛盾的行为


(显然,我可以自己捕获异常并终止进程,但我在询问默认行为)

您描述的行为差异让我认为该线程是OS X上的守护进程线程。是您自己创建的,还是在某些第三方代码中创建的?根据操作系统的不同,它可以创建为守护线程还是非守护线程


尝试检查
isDaemon()
方法返回的内容(至少在使用
threading
接口的情况下)。

我自己创建线程。哦,我确实在线程上调用了
setDaemon(True)
。这解释了OSX的行为,但不是Windows的行为。