Python多线程实例教程

2019-10-05 20:24:06于丽

这里只是将target指向从一个函数对象变成了一个可调用的类实例。

重点推荐下第三种方式,用继承threading.Thread的方式来实现线程,有过Java多线程应用的朋友一定会对下面的例子非常熟悉。

from time import ctime,sleep 
import threading; 
from random import choice 
 
class MyThread(threading.Thread): 
  def __init__(self,func,args,name): 
    super(MyThread,self).__init__(); 
    self.func=func; 
    self.args=args; 
    self.name=name; 
       
  def run(self): 
    self.result=self.func(*self.args); 
 
  def getResult(self): 
    return self.result; 
   
def loop(number,sec): 
  print "Thread ",number," begins and will sleep ",sec," at ",ctime(); 
  sleep(sec); 
  print "Thread ",number,"ends at ",ctime(); 
   
def main(): 
  seconds=[2,4]; 
  threads=[]; 
  array=range(len(seconds)); 
  for i in array : 
    t=MyThread(loop,(i,choice(seconds)),loop.__name__); 
    threads.append(t); 
  print "main Thread begins at ",ctime(); 
  for t in threads : 
    t.start(); 
  for t in threads : 
    t.join();     
  print "main Thread ends at ",ctime(); 
 
if __name__=="__main__" : 
  main(); 
  

从上面可以看出MyThread继承了threading.Thread类,并在初始化方法中执行了必要的参数赋值。值得注意的是在Java类的继承中,如果不显示的指定调用父类的构造方法,那么默认将调用父类的无参构造方法。而在Python中,就不会主动去调用。所以这里需要显示的调用父类的初始化方法。

希望本文所述对大家的Python程序设计有所帮助。