15、多任务-线程-查看正在运行的线程

在ipython3中测试知识点:

threading中的enumerate
enumerate得到的结果是一个元组,可以通过拆包得到序号和内容
enumerate不仅可以得到子线程的数量还可以得到它本身
在这里插入图片描述

03-查看线程数.py

命令:
按下esc到命令模式
w:向右跳一个单词(word)
b:向左跳一个单词
按i进入编辑模式,删掉不需要的内容,重新输入

代码解读:
for i in range(5):
print("—test1----%d" % i)
此处的格式化打印应该是%d,而不是s%,d是整数,s是字符串

import threading


def test1():
	for i in range(5):
		print("---test1----%d" % i)


def test2():
	for i in range(5):
		print("---test2----%d" % i)		


def main():
	t1 = thredading.Thread(target=test1)
	t2 = thredading.Thread(target=test2)
	t1.start()
	t2.start()
print(threading.enumerate())

if __name__ == "__main__"
	main()

以上代码print(threading.enumerate())最终输出的只有一个主线程,而没有子线程,因为子线程没有延时,这个主线程和两个子线程谁先执行由操作系统决定,但是不确定,三个线程在抢先后顺序。

线程的运行是没有先后顺序的,是随机的。

修改代码,验证创建thread指定函数执行结束时,子线程结束

import threading
import time


def test1():
	for i in range(5):
		print("---test1----%d" % i)
		time.sleep(1)


def test2():
	for i in range(5):
		print("---test2----%d" % i)	
		time.sleep(1)	


def main():
	t1 = thredading.Thread(target=test1)
	t2 = thredading.Thread(target=test2)
	t1.start()
	t2.start()
while True:
	print(threading.enumerate())
	time.sleep(1)

if __name__ == "__main__"
	main()

以上代码是无限循环的,如果想让子线程执行完后,关闭主线程,需要用len(threading.enumerate())进行if判断

import threading
import time


def test1():
	for i in range(5):
		print("---test1----%d" % i)
		time.sleep(1)


def test2():
	for i in range(5):
		print("---test2----%d" % i)	
		time.sleep(1)	


def main():
	t1 = thredading.Thread(target=test1)
	t2 = thredading.Thread(target=test2)
	t1.start()
	t2.start()
while True:
	print(threading.enumerate())
	if len(threading.enumerate())<=1:
		break
	time.sleep(1)

if __name__ == "__main__"
	main()

调Thread时,不会创建线程,调用start后才会创建线程并执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值