Python學習筆記|Python之執行緒

Tester_hope發表於2018-12-18

1.單執行緒

單執行緒執行完一件事情才能執行另外一件事件

	def Learn(name,loop):
	    for i in range(loop):
	        print('Learn: %s %s '%(name,time.ctime()))
	        time.sleep(1)
	
	
	def Listen(name, loop):
	    for i in range(loop):
	        print('Listen: %s %s ' % (name, time.ctime()))
	        time.sleep(1)
	
	if __name__ == '__main__':
	    Learn('python', 3)
	    Listen('java',4)
	    print('end time %s'%time.ctime())

2.多執行緒

  • 建立執行緒
	threading.Thread(target= Listen,args=('java',4))

  • 啟動執行緒

start()啟動執行緒

  • 守護主執行緒

設定守護主執行緒後,如果執行到了主執行緒,則直接退出

setDaemon(True):
  • 阻塞主執行緒

join()一直阻塞直到所有子執行緒結束

join(timeout)阻塞timeout時間

程式碼如下:

def Learn(name,loop):
for i in range(loop):
    print('Learn: %s %s '%(name,time.ctime()))
    time.sleep(1)


def Listen(name, loop):
    for i in range(loop):
        print('Listen: %s %s ' % (name, time.ctime()))
        time.sleep(1)

  #1.建立執行緒
t1 = threading.Thread(target= Listen,args=('java',4))
t2 = threading.Thread(target= Learn,args=('python',3))

if __name__ == '__main__':
    #4.守護主執行緒
    t1.setDaemon(True)
    t2.setDaemon(True)

    #2.啟動執行緒
    t1.start()
    t2.start()

    #3.阻塞主執行緒,即在所有的子執行緒結束後再執行主執行緒
    # t1.join()
    # t2.join()

    print('主執行緒: %s'%time.ctime())

3.執行緒鎖

  • 建立執行緒鎖
	lock = threading.Lock()
  • 獲取執行緒鎖
	lock.acquire()
  • 釋放執行緒鎖
	lock.release()

	lock = threading.Lock()  #獲取執行緒鎖
	def run_thread(n):
	    for i in range(1000000):
	        #獲取鎖
	        lock.acquire()
	        try:
	            change(n)
	        finally:
	            #釋放鎖
	            lock.release()

相關文章