日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

python之線程

 禁忌石 2022-05-13
# -*- coding: UTF-8 -*-import threadimport time# start_new_thread(function,args, kwargs=None) 生成一個(gè)新的線程# allocate_lock() 分片locktype鎖對(duì)象# exit() 給線程退出指令# acquire(wait=None) 嘗試獲取鎖的對(duì)象# locked() 如果獲取了鎖對(duì)象則返回True, 否則,返回False# release() 釋放鎖def loop0(): print 'start loop 0 at:', time.ctime() time.sleep(4) print 'loop 0 done at:', time.ctime()def loop1(): print 'start loop 1 at', time.ctime() time.sleep(2) print 'loop 1 done at:', time.ctime()def 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()#不加線程時(shí),需要6-7s,通過(guò)線程后,腳本運(yùn)行只需要4sif __name__ == '__main__': main()
文章圖片1
# -*- coding: UTF-8 -*-# -*- coding: UTF-8 -*-import threadimport time# 使用線程和鎖。# 通過(guò)使用鎖,可以在所有線程全部完成執(zhí)行后立即退出。# start_new_thread(function,args, kwargs=None) 生成一個(gè)新的線程,使用給定的args和可選的kwargs來(lái)執(zhí)行function# allocate_lock() 分配locktype鎖對(duì)象# exit() 給線程退出指令# acquire(wait=None) 嘗試獲取鎖的對(duì)象# locked() 如果獲取了鎖對(duì)象則返回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.release()def main():    print 'starting at:', time.ctime()    locks = []    nloops = range(len(loops))    for i in nloops:        #分配鎖,獲取鎖對(duì)象        lock = thread.allocate_lock()        #取得每一個(gè)鎖,相當(dāng)于將“把鎖鎖上”,鎖上之后,將鎖添加到鎖列表lockslock.acquire()        locks.append(lock)    for i in nloops:        #調(diào)用函數(shù)loop(),并傳遞3個(gè)參數(shù):        # i, 對(duì)應(yīng)loop(nloop, nsec, lock):的nloop        # loops[i], 對(duì)應(yīng)loop(nloop, nsec, lock):的nsec        # locks[i]:鎖對(duì)象,對(duì)應(yīng)函數(shù)lock參數(shù)        thread.start_new(loop, (i, loops[i], locks[i]))    for i in nloops:        while locks[i].locked():            pass    print 'all Done at:', time.ctime()if __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,表示執(zhí)行一個(gè)線程的對(duì)象# lock,鎖對(duì)象,和thread模塊中的鎖一樣# Rlock,可重入鎖對(duì)象,使單一線程可以再次獲得已持有的鎖(遞歸鎖)# Condition,條件變量對(duì)象,使得一個(gè)線程等等另一個(gè)線程滿足特定的條件,比如改變狀態(tài)或者某一個(gè)值# Even,條件變量的通用版本,任意數(shù)量的線程等待某一個(gè)事件的發(fā)生,在該事件發(fā)生后所有線程將被激活# Semaphore: 為線程間共享的有限資源提供一個(gè)計(jì)數(shù)器,如果沒(méi)有可用資源時(shí)會(huì)被阻塞# BoundSemaphore: 與Semaphore相似,不過(guò)他不允許超過(guò)初始值# Timer: 與Thread相似,不過(guò)它要在運(yùn)行前等待一段時(shí)間# Barrier: 創(chuàng)建一個(gè)障礙,必須達(dá)到指定數(shù)量的線程后才可以繼續(xù)# thread模塊:不支持守護(hù)線程,當(dāng)主線程結(jié)束后,所有子線程都終止。# threading.Thread對(duì)象屬性# name, 線程名# ident: 線程標(biāo)識(shí)符# daemon: 布爾標(biāo)志,表示這個(gè)線程是否是守護(hù)線程# threading.Thread對(duì)象方法# __init__(group=None, target=None, name=None, args=(), kwargs={}, verbase=None, daemon=None)# 實(shí)例化一個(gè)線程對(duì)象,需要一個(gè)可調(diào)用的target,以及其參數(shù)args或kwargs,還可以傳遞name或group參數(shù)。# 此外verbose 標(biāo)志也可以接受# daemon的值將會(huì)設(shè)定為thread.daemon屬性/標(biāo)志# start(),開(kāi)始執(zhí)行線程# run(),定義線程功能,通常在子類(lèi)中被應(yīng)用重寫(xiě)# join(timeout=None),直到啟動(dòng)的線程終止之前一直掛起,除非給出了timeout(秒),否則會(huì)一直阻塞# getName(),返回線程名# setName(),設(shè)定線程名# isAlive/is_alive(),布爾標(biāo)志,表示這個(gè)線程是否存活# isDaemon(),如果是守護(hù)線程,則返回True,否則返回False# setDaemon(daemon),把線程的守護(hù)標(biāo)志設(shè)定為布爾值 daemonic(必須在線程 start()之前調(diào)用)loops = [4, 2]def loop(nloop, nsec): print 'start loop', nloop, 'at:', time.ctime() time.sleep(nsec) print 'loop', nloop, 'done at:', time.ctime()def 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.ctime()if __name__ == '__main__': main()#輸出結(jié)果# 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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約