threading 例子

threading 模块例子

1. join 的作用

等待线程运行结束

不加 join()

import threading
import time


def get_excute_time(fun):
    def wrapper(*args):
        start = time.time()
        fun(*args)
        end = time.time()
        print("spend %.2fs"%(end - start))
    return wrapper


def spent(second):
    print("sleep %s"%second)
    time.sleep(second)
    print("done %s"%second)  


def main():
    threads = []
    for i in range(1,5):
        t = threading.Thread(target=spent,args=(i,))
        threads.append(t)
        t.start()
    # for i in threads:
    #     i.join()   


if __name__ == "__main__":
    start = time.time()
    main()
    end = time.time()
    print("spend %ss"%(end - start))
    

输出:

$ python thread_test.py 
sleep 1
sleep 2
sleep 3
sleep 4
spend 0.004759550094604492s
done 1
done 2
done 3
done 4

加上 join()

import threading
import time


def get_excute_time(fun):
    def wrapper(*args):
        start = time.time()
        fun(*args)
        end = time.time()
        print("spend %.2fs"%(end - start))
    return wrapper


def spent(second):
    print("sleep %s"%second)
    time.sleep(second)
    print("done %s"%second) 


def main():
    threads = []
    for i in range(1,5):
        t = threading.Thread(target=spent,args=(i,))
        threads.append(t)
        t.start()
    for i in threads:
        i.join()   


if __name__ == "__main__":
    start = time.time()
    main()
    end = time.time()
    print("spend %ss"%(end - start))

输出:

$ python thread_test.py 
sleep 1
sleep 2
sleep 3
sleep 4
done 1
done 2
done 3
done 4
spend 4.017388582229614s
posted @ 2022-08-13 23:31  绣幕  阅读(21)  评论(0编辑  收藏  举报