新四季網

python入門多線程(python之線程)

2023-04-20 03:57:02 2

# -*- coding: UTF-8 -*-import threadimport time# start_new_thread(function,args, kwargs=None) 生成一個新的線程# allocate_lock 分片locktype鎖對象# exit 給線程退出指令# acquire(wait=None) 嘗試獲取鎖的對象# locked 如果獲取了鎖對象則返回True, 否則,返回False# release 釋放鎖def loop0: print "start loop 0 at:", time.ctime time.sleep(4) print "loop 0 done at:", time.ctimedef loop1: print 'start loop 1 at', time.ctime time.sleep(2) print "loop 1 done at:", time.ctimedef main: print "starting at: ", time.ctime # loop0 # loop1 thread.start_new(loop0, ) thread.start_new(loop1, ) time.sleep(6) print "all Done at: ", time.ctime#不加線程時,需要6-7s,通過線程後,腳本運行只需要4sif __name__ == '__main__': main

# -*- coding: UTF-8 -*-# -*- coding: UTF-8 -*-import threadimport time# 使用線程和鎖。# 通過使用鎖,可以在所有線程全部完成執行後立即退出。# start_new_thread(function,args, kwargs=None) 生成一個新的線程,使用給定的args和可選的kwargs來執行function# allocate_lock 分配locktype鎖對象# exit 給線程退出指令# acquire(wait=None) 嘗試獲取鎖的對象# locked 如果獲取了鎖對象則返回True, 否則,返回False# release 釋放鎖loops = [4, 2]def loop(nloop, nsec, lock): print "start loop 0 at:", time.ctime time.sleep(nsec) print "loop", nloop, 'done at:', time.ctime lock.releasedef main: print 'starting at:', time.ctime locks = [] nloops = range(len(loops)) for i in nloops: #分配鎖,獲取鎖對象 lock = thread.allocate_lock #取得每一個鎖,相當於將「把鎖鎖上」,鎖上之後,將鎖添加到鎖列表locks中 lock.acquire locks.append(lock) for i in nloops: #調用函數loop,並傳遞3個參數: # i, 對應loop(nloop, nsec, lock):的nloop # loops[i], 對應loop(nloop, nsec, lock):的nsec # locks[i]:鎖對象,對應函數lock參數 thread.start_new(loop, (i, loops[i], locks[i])) for i in nloops: while locks[i].locked: pass print 'all Done at:', time.ctimeif __name__ == '__main__': main#輸出# starting at: Thu May 12 23:37:28 2022# start loop 0 at: start loop 0 at:Thu May 12 23:37:28 2022 # Thu May 12 23:37:28 2022# loop 1 done at: Thu May 12 23:37:30 2022# loop 0 done at: Thu May 12 23:37:32 2022# all Done at: Thu May 12 23:37:32 2022

# -*- coding: UTF-8 -*-import threadingimport time# threadming模塊# thread,表示執行一個線程的對象# lock,鎖對象,和thread模塊中的鎖一樣# Rlock,可重入鎖對象,使單一線程可以再次獲得已持有的鎖(遞歸鎖)# Condition,條件變量對象,使得一個線程等等另一個線程滿足特定的條件,比如改變狀態或者某一個值# Even,條件變量的通用版本,任意數量的線程等待某一個事件的發生,在該事件發生後所有線程將被激活# Semaphore: 為線程間共享的有限資源提供一個計數器,如果沒有可用資源時會被阻塞# BoundSemaphore: 與Semaphore相似,不過他不允許超過初始值# Timer: 與Thread相似,不過它要在運行前等待一段時間# Barrier: 創建一個障礙,必須達到指定數量的線程後才可以繼續# thread模塊:不支持守護線程,當主線程結束後,所有子線程都終止。# threading.Thread對象屬性# name, 線程名# ident: 線程標識符# daemon: 布爾標誌,表示這個線程是否是守護線程# threading.Thread對象方法# __init__(group=None, target=None, name=None, args=, kwargs={}, verbase=None, daemon=None)# 實例化一個線程對象,需要一個可調用的target,以及其參數args或kwargs,還可以傳遞name或group參數。# 此外verbose 標誌也可以接受# daemon的值將會設定為thread.daemon屬性/標誌# start,開始執行線程# run,定義線程功能,通常在子類中被應用重寫# join(timeout=None),直到啟動的線程終止之前一直掛起,除非給出了timeout(秒),否則會一直阻塞# getName,返回線程名# setName,設定線程名# isAlive/is_alive,布爾標誌,表示這個線程是否存活# isDaemon,如果是守護線程,則返回True,否則返回False# setDaemon(daemon),把線程的守護標誌設定為布爾值 daemonic(必須在線程 start之前調用)loops = [4, 2]def loop(nloop, nsec): print 'start loop', nloop, 'at:', time.ctime time.sleep(nsec) print 'loop', nloop, 'done at:', time.ctimedef main: print 'starting at:', time.ctime threads = [] nloops = range(len(loops)) for i in nloops: t = threading.Thread(target=loop, args=(i, loops[i])) threads.append(t) for i in nloops: threads[i].start for i in nloops: threads[i].join print 'all done at:', time.ctimeif __name__ == "__main__": main#輸出結果# starting at: Fri May 13 00:22:22 2022# start loop 0 at: Fri May 13 00:22:22 2022# start loop 1 at: Fri May 13 00:22:22 2022# loop 1 done at: Fri May 13 00:22:24 2022# loop 0 done at: Fri May 13 00:22:26 2022# all done at: Fri May 13 00:22:26 2022

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了