博客
关于我
Python基础——Thread类与线程对象
阅读量:796 次
发布时间: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 | pendulum,一个有趣的 日期和时间 Python 库!
查看>>
python | pluginbase,一个神奇的 关于插件框架 的Python 库!
查看>>
python | pyparsing,一个强大的 Python 库!
查看>>
python | pyqtgraph,一个神奇的 Python 库!
查看>>
python读取文本文件数据
查看>>
python | Python mock对象与测试替身
查看>>
python | Python pandas实现数据追加和合并的最佳方法
查看>>
python | Python 中检查一个数字是否是三态数
查看>>
python | Python 蒙特卡洛模拟
查看>>
python | Python中的类多态:方法重写和动态绑定
查看>>
python | Python模块缓存:sys.modules机制
查看>>
python | pyupgrade,一个有趣的 Python 库!
查看>>
Python | qutip,一个高级的 Python 库!
查看>>
python | reflex,一个无敌的 Python 库!
查看>>
python | reloading,一个强大的 Python 库!
查看>>
python | rich,一个无敌的 Python 库!
查看>>
python | rlax,一个超强的 强化学习领域 Python 库!
查看>>
python | rpyc,一个超实用的 Python 库!
查看>>
python | rq,一个无敌的 关于Redis 的Python 库!
查看>>
python读取字符串指定位置字符_python要怎么截取指定位置的字符串呢?
查看>>