python 线程

本文介绍了Python中线程的创建和管理,包括普通创建线程、面向对象创建线程、设置主线程是否等待子线程结束、自定义等待时间以及线程名称的设置和获取。示例代码详细展示了如何实现这些功能,强调了线程在处理I/O操作时的效率优势。
摘要由CSDN通过智能技术生成

线程就是一个进程的实例,但是在python中当我们运行计算密集型的程序时,cpu的效率会很低,所以使用线程执行的程序一般都是I/O操作的程序,如输入输出,文件的读写,socket通信,一般情况下主线程必须等待子线程运行结束,主线程才能结束

在python中创建线程的记中方式,以及常用的关于线程的内容如下:

  1. 普通创建线程的基本语法
import threading
import time
#普通创建线程的方式
def target_fun(args):
    time.sleep(args)
    print(args)
t1 = threading.Thread(target=target_fun,args=(3,))
t1.start()
print(123)
  1. 通过面向对象创建线程,线程的本质就是在Thread中执行一个run方法,调用底层的方法
class MyThread(threading.Thread):
    def run(self):
        print(123,self._args,self._kwargs)

t1 = MyThread(args=(1,2,3))
t1.start()
t2 = MyThread(args=(9,10,11))
t2.start()
  1. 设置主线程不等待子线程运行结束
def target_fun(args):
    time.sleep(3)
    print(args,end="\n")
t1 = threading.Thread(target=target_fun,args=(3,))
t1.setDaemon(True) #setDaemon(True/False) True表示主线程不等待子线程运行结束,False表示主线程必须等待子线程运行结束
t1.start()

t2 = threading.Thread(target=target_fun,args=(9,))
t2.setDaemon(True)
t2.start()

print(123)
  1. 自定义主线程最多等待子线程时间
def target_func(args):
    time.sleep(30)
    print(args)

print("创建线程t1")
t1 = threading.Thread(target=target_func,args=(3,))
t1.start()
t1.join(1)   #表示最多等待线程1s join中的参数表示最多等待线程多长时间
print("创建线程t2")
t2 = threading.Thread(target=target_func,args=(9,))
t2.start()
t2.join(1)
print(123)
  1. 设置/获取当前运行线程的名称
def target_func(args):
    v1=threading.current_thread() #获得当前运行的线程对象
    print(v1.getName(),end="\n") #打印当前线程的名称
    print(args)
    time.sleep(3)

t1 = threading.Thread(target=target_func,args=(3,))
t1.setName("线程1")  #设置线程的名字
t1.start()

t2 = threading.Thread(target=target_func,args=(9,))
t2.setName("线程2")
t2.start()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值