sys.exit()在Python多线程内调用时不会退出

最近在多线程内调用sys.exit()时发现不会退出

import sys, time
from threading import Thread

def testexit():
    time.sleep(5)
    sys.exit()
    print "post thread exit"

t = Thread(target = testexit)
t.start()
t.join()
print "pre main exit, post thread exit"
sys.exit()
print "post main exit"

解决办法是:用os._exit()来强制直接退出

原因是sys.exit()是引发一个SystemExit异常,因为是在子线程引出异常的,所以它是子线程退出,主线程还是正常运行

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Python退出程序,可以使用`sys`模块中的`exit()`函数。可以使用`sys.exit()`或`exit()`来退出程序。例如: ```python import sys print("程序开始执行...") sys.exit() print("程序已退出") ``` 在此示例中,当`sys.exit()`被调用,程序将立即停止并退出。 ### 回答2: 在Python中,可以使用`exit()`函数或者`sys.exit()`函数来退出程序。 1. 使用`exit()`函数: `exit()`函数是Python内置的一个函数,可以立即退出程序。调用`exit()`函数后,程序立即终止执行,不会执行后续的代码。 示例代码: ```python print("开始执行") exit() print("这行代码不会被执行") ``` 2. 使用`sys.exit()`函数: `sys.exit()`函数是在`sys`模块中定义的。和`exit()`函数类似,`sys.exit()`函数也可以用来退出程序。调用`sys.exit()`函数后,程序立即终止执行,不会执行后续的代码。 示例代码: ```python import sys print("开始执行") sys.exit() print("这行代码不会被执行") ``` 无论是使用`exit()`函数还是`sys.exit()`函数,都会立即终止程序的执行。但是需要注意的是,如果程序中存在多个线程或子进程,调用这两个函数只会终止当前线程或子进程的执行,而不会终止整个程序的执行。要真正退出包括所有线程和子进程的程序,需要在主线程或主进程中调用这两个函数。 ### 回答3: Python 退出程序有多种方式。 方式一:使用sys模块 可以使用sys模块的exit()函数来退出程序。exit()函数接受一个可选的退出状态参数,默认为0表示正常退出。在程序中调用exit()函数即可退出程序。 例子: import sys print('程序开始执行') # 检查某条件是否满足 if 条件: print('某条件满足') sys.exit() # 退出程序 print('程序结束执行') 方式二:使用os模块 可以使用os模块的kill()函数向当前进程发送SIGINT信号来退出程序。SIGINT信号可以被CTRL+C触发。 例子: import os print('程序开始执行') # 检查某条件是否满足 if 条件: print('某条件满足') os.kill(os.getpid(), 2) # 向当前进程发送SIGINT信号,退出程序 print('程序结束执行') 方式三:使用raise语句 可以使用raise语句抛出SystemExit异常来退出程序。SystemExit异常可以被捕获并处理,也可以让解释器直接退出。 例子: print('程序开始执行') # 检查某条件是否满足 if 条件: print('某条件满足') raise SystemExit # 抛出SystemExit异常,退出程序 print('程序结束执行') 以上是几种退出Python程序的方式,根据需要选择适合的方式退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值