Python3 类包装实现多线程


#-*-encoding:utf-8-*-
import threading
import time

exitFlag = 0

class myThread(threading.Thread):
    def __init__(self, threadID, name, delay):#用delay模拟运行时间
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.delay = delay
    def run(self):
        print("Starting", self.name)
        
        threadLock.acquire()#获得锁,成功锁定后返回true
        print_time(self.name, self.delay, 5)
        threadLock.release()#释放锁,开启下一个线程
        
        print("Exiting",self.name)
def print_time(threadName, delay, counter):
    while counter:
        if exitFlag:
            threadName.exit()
        time.sleep(delay)
        print("%s:%s"%(threadName, time.ctime(time.time())))
        counter -= 1
        
threadLock = threading.Lock()
threads = []
 
#创建线程       
thread1 = myThread(1, "thread-1", 1)
thread2 = myThread(2, "thread-2", 1)
thread3 = myThread(3, "Thread-3", 1)
thread4 = myThread(4, "Thread-4", 1)

#开启线程
thread1.start()
thread2.start()
thread3.start()
thread4.start()

#添加线程到线程列表
print("%s添加到线程列表"%thread1.name)
threads.append(thread1)
threads.append(thread2)

#等待所有线程完成join方法,如果一个线程或者一个函数在执行过程中要调用另外一个线程,
#并且待到其完成以后才能接着执行,那么在调用这个线程时可以使用被调用线程的join方法。
for t in threads:
    print("等待%s线程完成"%thread1.name) 
    t.join()
 
print("退出主线程")