博客
关于我
Python基础——Thread类与线程对象
阅读量:797 次
发布时间: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字符串input输入_Python input()函数:获取用户输入的字符串
查看>>
python 对json数据读取及保存与读取,对dump,dumps,load,loads的理解
查看>>
Python 对mysql数据库的操作
查看>>
Python 对象数据库列表
查看>>
Python 导入requests报错No module named requests
查看>>
Python 将JPEG图片批量改成jpg并删除JPEG图片
查看>>
python 将函数加到列表中进行调用
查看>>
python 将图片与字符串相互转换
查看>>
Python 嵌套字典全面指南
查看>>
Python 工具v简介
查看>>
Python编程入门指南:从零开始探索编程的奇妙世界
查看>>
python 常见内置函数setattr、getattr、delattr、setitem、getitem、delitem
查看>>
Python 常见的错误类型和继承关系
查看>>
python 常量_零基础学Python系列之一:Python的变量与常量
查看>>
Python 并发编程
查看>>
Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能
查看>>
python 序列化操作
查看>>
Python 开发者,这 7 个 VS Code 插件极力推荐
查看>>
python手把手视频_硬货 | 手把手带你构建视频分类模型(附Python演练))
查看>>