博客
关于我
Python基础——多线程值从Thread类继承
阅读量:800 次
发布时间: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 开发者,这 7 个 VS Code 插件极力推荐
    查看>>
    python手把手视频_硬货 | 手把手带你构建视频分类模型(附Python演练))
    查看>>
    python 录音左右声道_Python分离立体声wav压缩文件的左右声道
    查看>>
    Python 循环异或对文件进行加解密
    查看>>
    Python开发环境搭建(附VMware安装包及虚拟机环境)
    查看>>
    python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
    查看>>
    Python 快速下载依赖
    查看>>
    python实现非参数统计的Cochran检验 (附完整源码)
    查看>>
    python 怎么验证是否安装成功 scrapy
    查看>>
    Python 手写数字识别-1
    查看>>
    Python实现接口自动化测试库(JSON与Requests)详解
    查看>>
    Python 手写数字识别-3-sklearn中的几种算法
    查看>>
    python实现SSIM和MSSSIM计算 (附完整源码)
    查看>>
    Python 打开文件注意事项
    查看>>
    python 批量修改文件名_python windows下批量修改文件名
    查看>>
    Python 抓取网页乱码问题 以及EXCEL乱码
    查看>>
    python 抓取网页内容
    查看>>
    python 按照当前日期创建文件
    查看>>
    Python 接口并发测试详解
    查看>>
    Python 接口自动化 —— requests框架
    查看>>