c语言线程管理,线程管理 - Python教程 - C语言网

线程管理主要包括线程创建、启动、休眠、等待线程结束和线程停止,线程创建即为我们上一节学习的内容,线程启动的方式为thread.start(),线程休眠的方式为time.sleep(),注意要引入time模块才可以使用线程休眠功能,这一节我们就来学习一下等待线程结束和线程停止。

1. 等待线程结束

所谓等待线程结束,就是保证主线程在子线程结束之后结束,使用的依然是join()方法,我们需要在join中设置超时时间,即join(timeout = None)。

代码如下:import threading

import time

def test():

print('子线程开始')

for i in range(3):

print('第%d次执行子线程'%i)

time.sleep(1)

print('子线程结束')

if __name__ == '__main__':

print('主线程开始')

thread_one = threading.Thread(target=test)

thread_one.start()

thread_one.join()#如果注释掉再看一下运行结果

print('主线程结束')

运行结果如下:主线程开始

子线程开始

第0次执行子线程

第1次执行子线程

第2次执行子线程

子线程结束

主线程结束

把代码倒数第二行的等待线程结束注释掉,运行结果为:主线程开始

子线程开始

第0次执行子线程

主线程结束

第1次执行子线程

第2次执行子线程

子线程结束

运行结果会出现子线程还没有结束,主线程就已经结束的情况,所以我们增加等待线程结束的语句能保障程序的运行。

2. 线程停止

我们在创建线程之后,如果run()方法或者函数执行结束,那么线程就会停止,但是当我们遇到一些限制条件的时候,例如我们当前的内存不支持过多的线程运行,因此当线程数量超过规定数的时候,我们就要把线程停止,或者我们规定的时间到了之后我们就需要把线程停止。

线程停止的方法我们可以采用设置一个线程停止变量,代码如下:import time

import threading

running = True

def test():

while running:

print('线程开始工作\n')

time.sleep(8)

print('工作完毕')

if __name__ == '__main__':

thread = threading.Thread(target = test)

thread.start()

s = input('是否停止执行,确认停止请输入False:')

if s == 'False':

running = False

运行结果如下:线程开始工作

是否停止执行,确认停止请输入False:False

工作完毕

在这里,我们首先是创建了一个使线程停止的变量,然后我们在函数体中进行一个判断,如果这个变量为True就执行相关工作,除了这个变量我们没有设置停止操作,因此只要这个变量不改变,那么工作完毕这条语句是不会被执行的,那么我们在主程序中先创建一个线程来使用这个方法,然后我们可以通过键盘输入指令,如果我们输入的指令为Flase时,那么while中的判断即为False,因此子线程工作完毕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值