線程(四):使用threading模塊建立線程

# coding:utf-8

'''
threading 模塊介紹:
    1.threading 是對thread模塊的再封裝
    2.threading 模塊支持守護線程
    3.守護線程 :守護正常線程不會因爲進程結束而被打斷
                 守護線程會在所有線程結束之後運行
                 在進程要結束之前會對守護線程進行檢測,如果守護線程沒有被運行,
                 進程就不會結束而在等待中,如果守護線程在運行就會進程結束


    threading.Thread(target,args)  創建線程,但沒有啓動線程
        初學只需要用到兩個參數
            target 線程所要加載的函數
            args   被加載函數所需要的參數

    .start()   開啓線程
    .join()     掛起線程

    在thread模塊中
    thread.start_new_thread()方法不僅創建了線程而且啓動了線程
'''

import threading
import time

def loop(nLoop,nSec):
    print("loop%s is start at:"%nLoop,time.ctime())
    time.sleep(nSec)
    print("loop%s is stop at:"%nLoop,time.ctime())

def main():
    print("all is start at :",time.ctime())
    sleep_list=[2,3,4,2,1]
    thread_list=[]

    for i in range(len(sleep_list)):
        t = threading.Thread(target=loop,args=(i,sleep_list[i])) #創建線程,但沒有啓動線程
        thread_list.append(t)     #將創建的線程存儲在線程列表當中

    for i in thread_list:
        print(i)            #爲了直觀的看到所有的線程,將創建的線程打印出來

    for i in range(len(sleep_list)):
        thread_list[i].start()      #開啓線程

    for i in range(len(sleep_list)):
        thread_list[i].join()       #掛起線程,但是線程沒有結束,被暫停了
                                    #可以再次打印線程列表看出來

    print('---------------------------')

    for i in thread_list:
        print(i)            #打印被掛起的線程



if  __name__ == '__main__':
    main()
發佈了14 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章