博客
关于我
Python基础——多线程值从Thread类继承
阅读量:796 次
发布时间:2023-03-07

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

在上一节中,我们学习了如何通过封装Thread类来实现线程编程。然而,这种方法并不常见,通常我们更倾向于从Thread派生一个子类,并在该类中包含线程相关的代码。这种方法更为灵活,也更符合常见的编程实践。以下是具体的代码示例:

上一节介绍了封装Thread类的对象

这一次学习一种更常用的封装方法,从Thread派生一个子类,然后将线程有关代码放到此类中

这种常规做法非常常见,先看代码:

# ——创建时间:2019.3.2——
# 多线程
import threading
from time import ctime, sleep
class MyThread(threading.Thread):
# 重写父类构造方法
# 三个参数名称分别是线程函数名、线程函数参数、线程名
def __init__(self, func, args, name=''):
# 调用父类构造方法,并传入参数
super().__init__(target=func, name=name, args=args)
# 重写父类run方法
def run(self):
self._target(*self._args)
def fun(self, index, sec):
print('开始执行', index, '时间', ctime())
sleep(sec)
print('执行完毕', index, '时间', ctime())
def main():
print('开始', ctime())
thread1 = MyThread(fun, (10, 4), '线程一')
thread2 = MyThread(fun, (20, 2), '线程二')
thread1.start()
thread2.start()
print(thread1.name)
print(thread2.name)
thread1.join()
thread2.join()
if __name__ == '__main__':
main()

有bug?让我想想

在上述代码中,我们定义了一个名为MyThread的子类,继承自threading.Thread。为了方便起见,我们重写了Thread类的构造方法和run方法。以下是需要注意的几点:

  • 构造方法的参数顺序:在Python中,Thread类的构造方法定义为def __init__(self, target=None, args=(None,), name='Thread-<N>')。因此,在我们的MyThread类中,__init__方法的参数顺序应与Thread类的构造方法保持一致。即,target参数应放在args之前。

  • 线程执行目标:在run方法中,我们直接调用了self._target(*self._args)。如果目标函数需要更多的参数,需要确保args中包含足够的参数。

  • 线程名称和参数的传递:在创建MyThread实例时,需要正确传递目标函数和参数。例如,在main()函数中,我们传递了fun函数以及相关参数。

  • 线程启动和等待:确保调用start()方法启动线程,并在main()函数中调用join()方法等待线程完成,以避免程序结束后线程未完成任务。

  • 如果发现上述代码存在问题,可能是因为在__init__方法中参数的传递顺序不正确,或者目标函数未能正确接收参数。建议在编写多线程代码时,仔细检查参数传递和线程目标的定义是否正确。

    如果你发现具体错误,可以提供更多日志信息或错误提示,我可以帮助你进一步分析和解决问题。

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

    你可能感兴趣的文章
    Python 中的生成器是什么?
    查看>>
    Python 中的离线语音转文本
    查看>>
    Python读写json文件的简单实现
    查看>>
    Python 中的线程
    查看>>
    Python 中的继承机制是什么样的?
    查看>>
    python读写excel之xlrd&xlwt&xlutils组合
    查看>>
    Python 中的装饰器是什么?
    查看>>
    Python 中的装饰器是如何工作的,有哪些实际应用场景?
    查看>>
    python读excel
    查看>>
    Python 中读取 CSV 文件-ChatGPT4o作答
    查看>>
    Python 之 filecmp
    查看>>
    python请求html_使用Python请求获取HTML?
    查看>>
    Python 之匿名函数和偏函数
    查看>>
    python 之栈的实现
    查看>>
    python语音播放
    查看>>
    python语言:装饰器原理
    查看>>
    Python 交互式数据可视化详解
    查看>>
    python语言有哪些优点和缺点_Python有哪些优缺点,你了解吗?
    查看>>
    Python 从入门到精通:30天速成教程到底有多狠?你能坚持下来吗?
    查看>>
    Python 从数据库中存储和检索密码的最安全方法
    查看>>