博客
关于我
Python基础——Thread类与线程对象
阅读量:800 次
发布时间:2023-03-07

本文共 1397 字,大约阅读时间需要 4 分钟。

Thread多线程学习之Thread类与线程对象

在之前的学习中,我们已经掌握了Thread多线程的基本创建和管理方法。本节将深入探讨Thread类与线程对象的相关知识。

Thread构造方法的target参数

Thread构造方法的target参数不仅可以是一个函数,还可以是一个对象。这种设计非常符合面向对象编程的理念,使得代码更加简洁和高效。通过将目标封装在对象中,Thread类能够更灵活地管理线程执行。

关于__call__方法的重要性

在Thread类中,创建好的类必须包含**__call__方法**。当线程启动时,Thread会自动调用这个方法。这个方法的主要职责是执行目标函数,确保线程能够按照预期运行。例如,在本节示例代码中,MyThread类的__call__方法调用了目标函数fun,带入相应的参数。

线程函数的执行顺序

线程函数的执行顺序由其启动顺序决定。在示例代码中,thread1和thread2分别启动了两个线程,分别执行不同的任务。通过thread1.join()和thread2.join(),我们可以确保线程按照预期的顺序执行。需要注意的是,线程执行的具体时间由sleep函数控制。

示例代码解析

以下是本节的核心代码:

import threading
from time import sleep, ctime
class MyThread(object):
def __init__(self, func, args):
self.func = func
self.args = args
def __call__(self, *args, **kwargs):
self.func(*self.args)
def fun(index, sec):
print('开始执行', index, '时间', ctime())
sleep(sec)
print('结束执行', index, '时间', ctime())
def main():
print('执行开始时间', ctime())
thread1 = threading.Thread(target=MyThread(fun, (1, 4)))
thread1.start()
thread2 = threading.Thread(target=MyThread(fun, (5, 4)))
thread2.start()
thread1.join()
thread2.join()

代码执行结果

代码执行结果如下:

执行开始时间 Sat Mar  2 19:31:53 2019
开始执行 1 时间 Sat Mar 2 19:31:53 2019
开始执行 5 时间 Sat Mar 2 19:31:53 2019
结束执行 5 时间 Sat Mar 2 19:31:57 2019
结束执行 1 时间 Sat Mar 2 19:31:57 2019

总结

通过本节的学习,我们掌握了如何使用Thread类和线程对象来创建和管理多线程程序。通过封装目标函数在Thread对象中,我们能够更方便地编写线程程序,同时保持代码的简洁性和可读性。

转载地址:http://jlofk.baihongyu.com/

你可能感兴趣的文章
python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
查看>>
python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
查看>>
Python图像处理:从内存加载jpeg
查看>>
python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
查看>>
python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
查看>>
python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
查看>>
python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
查看>>
Python哪个版本最稳定好用2023.10.19
查看>>
Python和黑客技术的渊源
查看>>
Python和RF编写接口自动化
查看>>
Python和RF编写web自动化
查看>>
python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
查看>>
python和java哪个更值得学——来自知乎高赞回答
查看>>
python和c混合编程 github_在pycharm中使用git版本管理以及同步github的方法
查看>>
python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
查看>>
Python命名中尾随下划线有什么好处?
查看>>
Python启动脚本
查看>>
Python听写汇总结果
查看>>
python吊打Excel?屁!那是你不会用!
查看>>
Python合并两张图片 | 先叠透明度再合并 (附Demo)
查看>>