上QQ阅读APP看书,第一时间看更新
1.3.1 threading模块中的Thread类
Thread是threading模块中最重要的类之一,可以使用它来创建线程。具体使用方法是创建一个threading.Thread对象,在它的初始化函数中将需要调用的对象作为初始化参数传入,具体代码如程序1-2所示。
【程序1-2】
# coding = utf8 import threading,time count = 0 class MyThread(threading.Thread): def __init__(self,threadName): super(MyThread,self).__init__(name = threadName) def run(self): global count for i in range(100): count = count + 1 time.sleep(0.3) print(self.getName() , count) for i in range(2): MyThread("MyThreadName:" + str(i)).start()
【代码解析】
在上面代码定义的MyThread类中,重写了从父对象继承的run方法;在run方法中,将一个全局变量的值逐次加1;在接下来的代码中,创建了2个独立的对象,分别调用了其start方法,最后逐一打印结果。
可以看到,程序中每个线程被赋予了一个名字,然后设置每隔0.3秒打印输出本线程的计数,即计数加1。而count被设置成全局共享变量,因此在每个线程中都可以自由地对其进行访问。
程序运行结果如图1.16所示。
从上面的结果可以看到,每个线程被起了一个对应的名字,而在运行时,线程所计算的计数被同时增加,这样可以证明,在程序运行过程中两个线程同时对一个数进行操作,并打印其结果。
提示:程序中的run方法和start方法,并不是threading自带的方法,而是从Python本身的线程处理模块Thread中继承来的。run方法的作用是在线程启动以后,执行预先写入的程序代码。一般而言,run方法所执行的内容被称为Activity。而start方法是用于启动线程。
图1.16