知行编程网知行编程网  2022-11-13 17:30 知行编程网 隐藏边栏  1 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python中Thread子类如何封装的相关知识,包括python调用包,以及java中标识符的命名规则这些编程知识,希望对大家有参考作用。


如何在 Python 中封装 Thread 子类


Thread子类的封装

使用threading模块可以完成多任务程序开发。为了让各个线程的封装更加完善,在使用threading模块的时候,往往会定义一个新的子类,只要继承threading.Thread,然后重新写run方法即可。

#coding=utf-8
import threading
import time
class MyThread1(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = "I'm "+self.name+' @ '+str(i) #name属性中保存的是当前线程的名字
            print(msg)
class MyThread2(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = "I'm "+self.name+' @ '+str(i) #name属性中保存的是当前线程的名字
            print(msg)
if __name__ == '__main__':
    t1 = MyThread1()
    t2 = MyThread2()
    t1.start()
    t2.start()

运行结果为:

如何在 Python 中封装 Thread 子类


说明:

Python的threading.Thread类有一个run方法来定义线程的函数功能,可以在自己的线程类中重写。

创建自己的线程实例后,可以通过Thread类的start方法启动线程。当线程得到执行的机会时,它会调用run方法来执行线程。

2. 线程的执行顺序

#coding=utf-8
import threading
import time
class MyThread(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = "I'm "+self.name+' @ '+str(i) #name属性中保存的是当前线程的名字
            print(msg)
def test():
    for i in range(1,5):
        t=MyThread()
        t.start()
if __name__ == '__main__':
   test()

运行结果为:

如何在 Python 中封装 Thread 子类


说明:

从代码和执行结果可以看出,多线程程序的执行顺序是不确定的。当sleep语句执行时,线程会被阻塞(Blocked),sleep结束后,线程会进入就绪(Runnable)状态,等待调度。线程调度会选择一个线程自己执行。以上代码只能保证每个线程运行整个run函数,但无法确定run函数中线程的启动顺序和每个循环的执行顺序。


总结:

每个线程都必须有一个名字,虽然上面的例子中没有指定线程对象的名字,但是python会自动给线程分配一个名字。

当线程的run()方法结束时该线程完成。

你无法控制线程调度程序,但可以通过其他方式影响线程调度方式。


线程的几种状态

如何在 Python 中封装 Thread 子类

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享