# -*- coding: utf-8 -*- import time from threading import Thread, Semaphore def go_ktv(i): print("user%s正在....ktv." % (i)) time.sleep(2) if __name__ == '__main__': '''開啓20個線程的運行時間,一個cpu併發執行20個線程,執行時間是最長線程執行的時間''' start_time = time.time() p_lst = [] for i in range(20): p = Thread(target=go_ktv, args=(i,)) p.start() p_lst.append(p) [pp.join() for pp in p_lst] print("運行時間:%s" % (time.time() - start_time)) # user0正在....ktv. # user1正在....ktv. # user2正在....ktv. # user3正在....ktv. # user4正在....ktv. # user5正在....ktv. # user6正在....ktv. # user7正在....ktv. # user8正在....ktv. # user9正在....ktv. # user10正在....ktv. # user11正在....ktv. # user12正在....ktv. # user13正在....ktv. # user14正在....ktv. # user15正在....ktv. # user16正在....ktv. # user17正在....ktv. # user18正在....ktv. # user19正在....ktv. # 運行時間:2.0061147212982178
# -*- coding: utf-8 -*- import time from threading import Thread, Semaphore def go_ktv(i): sem.acquire() print("user%s正在....ktv." % (i)) time.sleep(2) sem.release() if __name__ == '__main__': '''線程加信號量,線程自己是併發執行的,加了信號量,至關於又加了一把互斥鎖,併發執行5(信號量大小)個線程''' start_time = time.time() sem = Semaphore(5) p_lst = [] for i in range(20): p = Thread(target=go_ktv, args=(i,)) p.start() p_lst.append(p) [pp.join() for pp in p_lst] print("運行時間:%s" % (time.time() - start_time)) # user0正在....ktv. # user1正在....ktv. # user2正在....ktv. # user3正在....ktv. # user4正在....ktv. # user5正在....ktv. # user7正在....ktv. # user6正在....ktv. # user8正在....ktv. # user9正在....ktv. # user10正在....ktv. # user12正在....ktv. # user11正在....ktv. # user13正在....ktv. # user14正在....ktv. # user16正在....ktv. # user15正在....ktv. # user17正在....ktv. # user18正在....ktv. # user19正在....ktv. # 運行時間:8.002457857131958