线程

线程

一、线程模块

在这里插入图片描述

二、Thread(类)

在这里插入图片描述

三、join & setDaemon

在这里插入图片描述
join
在这里插入图片描述
setDaemon
在这里插入图片描述

四、创建线程

方法1:实例Thread类

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:DM time:2019/8/2 20:49
from threading import Thread
import time


def f1(people):
    print("hello,{}".format(people))
    time.sleep(3)
    print("bye")


def f2():
    print("hi")
    time.sleep(3)
    print("goodbye")


if __name__ == '__main__':
    # 1.正常调用,是有先后顺序,主线程
    f1()
    f2()
    # 2.线程操作
    f1_thread = Thread(target=f1, args=("胡歌",), name='hello')  # 创建了一个线程实例
    f2_thread = Thread(target=f2, name='hi')   # 实例对象时,函数并未执行
    # 设置线程名称
    f1_thread.setName("dai")
    f1_thread.setName("hu")

    print("f1 name:", f1_thread.getName())
    print("f2 name:", f2_thread.getName())
    # 守护线程
    # f1_thread.setDaemon(True)  # 在主线程执行完毕后,强行结束子线程,程序结束
    # f2_thread.setDaemon(True)
    # 运行线程
    f1_thread.start()   # 调用start方法才开始执行
    f2_thread.start()
    # 阻塞调用
    f1_thread.join()  # 阻塞调用,主线程进行等待
    f2_thread.join() 
	 # 若不调用阻塞,在主线程执行完毕后并不会立即结束程序,而是等子程序执行完毕后,才结束程序
    print("主线程执行完毕")

"""
主线程执行完毕了,但是子线程依然没有关闭(或陷入死循环),程序则一直无法关闭,于是出现了守护线程
守护线程:主线程执行完毕后,程序就关闭
"""

方法2:继承并重写Thread类

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:DM time:2019/8/2 21:15
from threading import Thread
import time

# 1.方式一(不太适用,因为不能接收参数)
class MyThread(Thread):
    def run(self):
        print('hello')
        time.sleep(3)
        print('bye')


my_thread = MyThread()  # 创建一个线程实例
my_thread.start()

# 重写了类中run方法,通过start方法自动去调用类中的run方法
# 2.方式二
class MyThread(Thread):
    def __init__(self, people, *args, **kwargs):
        super().__init__(*args, **kwargs)  # 继承父类构造方法
        self.people = people
    # 为了展示效果而重写的run方法(可忽略)
    def run(self):
        print('hello,{}'.format(self.people))
        time.sleep(3)
        print('bye')


my_thread = MyThread("齐时久", name="hello")  # 创建一个线程实例
print(my_thread.getName())
my_thread.start()


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值