python 应用场景之os._exit和sys.exit的本质区别

本文通过实例代码详细解释了Python中os._exit和sys.exit在多线程和多进程场景下的应用区别。sys.exit只会影响当前子线程,而os._exit会退出整个Python解释器。在多线程中,worker2使用sys.exit时,worker1会继续运行;而使用os._exit时,worker1会随worker2一同退出。
摘要由CSDN通过智能技术生成

在网上看到一堆人解释两者之间的区别,但都是一堆专业术语,而没有从应用场景进行过详细解释。简直是误人子弟的解释,所以今天突然来了兴趣把相关场景在此解释一下。

说到os._exit和sys.exit的本质区别,在应用上,我可以给个简单的例子说明一下:

主要应用在多线程和多进程场景里。

如果你在多个线程里,使用sys.exit,它只会停止当前子现场,而不会对主线程有任何影响。

而你使用os._exit,则将退出整个python解释器,停止工作。

本人已经实验过多线程模式,多进程模式等待其他同学有兴趣的可以进行测试。

测试代码如下:

def worker2(lock):
    sys.exit(1)
    #os._exit(1)


def worker1(lock):
    n = 0
    while n<10:
        print('worker1')
        time.sleep(1)
        n+=1

word2Thread = threading.Thread(
    target=worker2,
    name='work2',
    args=(1,)
)
word2Thread.start()
word1Thread = threading.Thread(
    target=worker1,
    name='work1',
    args=(1,)
)
word1Thread.start()

你会发现worker1并不会因为worker2的退出而停止工作。

我们现在换成os._exit试试呢。

你会发现worker1会随着worker2的退出而马上停止工作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值