Python创建多线程的两种常用方法总结
作者:不想赖床 发布时间:2023-11-16 16:41:09
标签:Python,创建,多线程
经过总结,Python创建多线程主要有如下两种方法:
函数
类
接下来,我们就来揭开多线程的神秘面纱。
1. 用函数创建多线程
在Python3中,Python提供了一个内置模块 threading.Thread,可以很方便地让我们创建多线程。
threading.Thread() 一般接收两个参数:
线程函数名:要放置线程让其后台执行的函数,由我们自已定义,注意不要加();
线程函数的参数:线程函数名所需的参数,以元组的形式传入。若不需要参数,可以不指定。
举个例子
import time
from threading import Thread
# 自定义线程函数。
def target(name="Python"):
for i in range(2):
print("hello", name)
time.sleep(1)
# 创建线程01,不指定参数
thread_01 = Thread(target=target)
# 启动线程01
thread_01.start()
# 创建线程02,指定参数,注意逗号
thread_02 = Thread(target=target, args=("MING",))
# 启动线程02
thread_02.start()
可以看到输出
hello Python
hello MING
hello Python
hello MING
2. 用类创建多线程
相比较函数而言,使用类创建线程,会比较麻烦一点。
首先,我们要自定义一个类,对于这个类有两点要求,
必须继承 threading.Thread 这个父类;
必须复写 run 方法。
这里的 run 方法,和我们上面线程函数的性质是一样的,可以写我们的业务逻辑程序。在 start() 后将会调用。
来看一下例子 为了方便对比,run函数我复用上面的main。
import time
from threading import Thread
class MyThread(Thread):
def __init__(self, type="Python"):
# 注意:super().__init__() 必须写
# 且最好写在第一行
super().__init__()
self.type=type
def run(self):
for i in range(2):
print("hello", self.type)
time.sleep(1)
if __name__ == '__main__':
# 创建线程01,不指定参数
thread_01 = MyThread()
# 创建线程02,指定参数
thread_02 = MyThread("MING")
thread_01.start()
thread_02.start()
当然结果也是一样的。
hello Python
hello MING
hello Python
hello MING
3. 线程对象的方法
上面介绍了当前 Python 中创建线程两种主要方法。
创建线程是件很容易的事,但要想用好线程,还需要学习线程对象的几个函数。
经过我的总结,大约常用的方法有如下这些:
# 如上所述,创建一个线程
t=Thread(target=func)
# 启动子线程
t.start()
# 阻塞子线程,待子线程结束后,再往下执行
t.join()
# 判断线程是否在执行状态,在执行返回True,否则返回False
t.is_alive()
t.isAlive()
# 设置线程是否随主线程退出而退出,默认为False
t.daemon = True
t.daemon = False
# 设置线程名
t.name = "My-Thread"
来源:https://juejin.cn/post/7231552045933002807


猜你喜欢
- 在MySQL中,A LEFT JOIN B join_condition执行过程如下:· 根据表A和A依赖的所有表设置表B。· 根据LEFT
- JDBC数据库连接MySQL中建表在终端使用命令mysql -u root -p打开数据库,在数据库操作环境下进行创建数据库,建表等等操作建
- 最近遇到一个SQL Server服务器响应极度缓慢,并且出现客户端请求报错的情况,在数据库中的errorlog中出现磁盘请求超过15s才完成
- 本文实例讲述了Python爬虫实现的根据分类爬取豆瓣电影信息功能。分享给大家供大家参考,具体如下:代码的入口:if __name__ ==
- //只能在firefox下运行 var test = { name: "puterjam", __noSuchMetho
- 本文实例讲述了mysql数据表的基本操作之表结构操作,字段操作。分享给大家供大家参考,具体如下:本节介绍:表结构操作创建数据表、查看数据表和
- 1,查看log情况mysql> show global variables like '%log%';+-------
- python远程控制电脑的具体代码,供大家参考,具体内容如下python拥有大量的第三方库,且语法简单。今天老杨就用python实现远程控制
- 我就废话不多说了,直接上代码吧!import paramikoimport pymysqlimport timelinux = ['
- 本文实例讲述了Python实现获取本地及远程图片大小的方法。分享给大家供大家参考,具体如下:了解过Pillow的都知道,Pillow是一个非
- 给每一个onClick再附加一个事件 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HT
- 文字链接可以说是网页中最常见的页面元素了,默认的文字链接样式都是带下划线的效果,这种一陈不变的外观可能使很多朋友都想改变它,以使之符合页面的
- 目录1. 字符串的翻转2. 判断字符串是不是回文串3. 单词大小写4. 字符串的拆分5. 字符串的合并6. 将元素进行重复7. 列表的拓展8
- 简单使用了一下之后,我觉得如果有机会(公司里面编码是极不自由的,也无所谓,我在公司不做数据分析),我肯定是更喜欢使用IPython作为我的P
- 在做数据挖掘的时候,想改一个DataFrame的column名称,所以就查了一下,总结如下:数据如下:>>>import
- 1 导言 Microsoft 在Microsoft SQL Server 2000中推出了与XML相关的功能以及Transact-SQL 关
- 使用MSSQL的站长朋友都会被MSSQL数据库吃内存的能力佩服得五体投地,一个小小的网站,运行若干天之后,MSSQL就会把服务器上所有的内存
- 可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2008/11/03/python-m
- 简单的测试用例#!/usr/bin/python# -*- coding: UTF-8 -*-import timefrom pymongo
- Go语言拼接URL路径有多种方法建议用ResolveReference。JoinPathJoinPath会把多个多个路径合并成一个路径,并且