Python 线程的调用

Python 启动线程有2种方法,分别为 直接调用 与 继承调用。

 

1. 直接调用:

import threading
import time

def sayhi(num):
    print('运行线程号为: %s' %num)
    time.sleep(3)

if __name__ == '__main__':
    t1 = threading.Thread(target=sayhi,args=(1,)) #创建一个线程 t1
    t2 = threading.Thread(target=sayhi,args=(2,)) #创建一个线程 t2

    t1.start()        #运行线程t1
    t2.start()        #运行线程t2

    print(t1.getName())    #打印线程t1名称
    print(t2.getName())    #打印线程t2名称

    t1.join()       #join 等待线程t1运行完毕再往下走
    t2.join()       #join 等待线程t2运行完毕再往下走
    
    print("运行完毕")

 

2. 直接调用,创建多个线程:

import threading
import time

def sayhi(num):
    print('运行线程号为: %s' %num)
    time.sleep(3)

if __name__ == '__main__':
    t_list = []
    for i in range(10):       # 循环创建 10个 线程。
        t = threading.Thread(target=sayhi,args=[i,])
        t.start()
        t_list.append(t)      # 将创建的进程 写入 t_list 这个列表中。

    for i in t_list:         # 循环列表,让所有线程,join ,执行完毕。
        i.join()

    print("运行完毕")

 

 

3. 继承的方式:

import threading
import time

class MyThread(threading.Thread):    #定义一个类,继承 threading.Thread 这个父类。
    def __init__(self,num):
        threading.Thread.__init__(self)       # 重写父类的构造函数。
        self.num = num

    def run(self):  #定义每个线程要运行的函数
        print("线程运行号:%s" %self.num)
        time.sleep(3)

if __name__ == '__main__':

    t1 = MyThread(1)
    t2 = MyThread(2)
    t1.start()
    t2.start()

 

4. 继承方式,增加join

import threading
import time

class MyThread(threading.Thread):    #定义一个类,继承 threading.Thread 这个父类。
    def __init__(self,num):
        threading.Thread.__init__(self)       # 重写父类的构造函数。
        self.num = num

    def run(self):  #定义每个线程要运行的函数
        print("线程运行号:%s" %self.num)
        time.sleep(3)
        print('线程 %s 运行完毕' %self.num)

if __name__ == '__main__':

    t1 = MyThread(1)
    t2 = MyThread(2)
    t1.start()
    t2.start()
    t1.join()
    t2.join()

 

posted @ 2016-08-11 10:33  丶小炒肉  阅读(342)  评论(0)    收藏  举报