1. 程式人生 > >python學習筆記--7.python中的多執行緒

python學習筆記--7.python中的多執行緒

這是在學習Python的時候做的筆記,有些時間了,大概是按照一本挺實用的入門書籍學的,我學習程式設計的思路一般是掌握基礎的變數型別,語法-分支結構 函式呼叫 類建立 結構體定義,記錄一些簡單的例項,剩下的就是需要用什麼百度現學。

對我來說python的優勢是,沒有型別要求,不用宣告,沒有指標,萬能陣列,庫很強大。

多執行緒可以說是一個強大的功能,並行使得效率極大的提高,python中也有好幾種多執行緒的方式

程式碼

from threading import Thread
import threading
import _thread  # 用於start new thread
import time import queue def printnum(count): for i in range(1, count): time.sleep(1) print(str(i)) print(str(threading.current_thread())) t1 = Thread(target=printnum, args=(5, )) t1.start() t2 = Thread(target=printnum, args=(3, )) t2.start() _thread.start_new_thread(printnum, (4
, )) # 必須後面有空位 逗號分開 # region 執行緒的一些方法 和操作 # 一個自定義執行緒 開啟兩個對一個變數進行累加 class MyThread(threading.Thread): def __init__(self, threadid, name, delay): threading.Thread.__init__(self) self.name = name self.threadid = threadid self.delay = delay def run(self): print("開啟執行緒: "
+ self.name) print_time(self.name, self.delay, 3) def print_time(threadName, delay, counter): # 一個普通的輸出函式 while counter: time.sleep(delay) threadLock.acquire() global count # 加上該句將其變為全域性變數 count = count + 1 # 這裡如果只有這一局會發生錯誤 在函式中修改的被認為區域性變數 沒有定義 threadLock.release() print('now is ' + str(count)) counter -= 1 threadLock = threading.Lock() # 執行緒鎖 用於鎖定資料 不允許執行緒同時修改 count = 0 # 計數器 t1 = MyThread(1, 'thread-1', 3) t2 = MyThread(2, 'thread-2', 2) t1.start() t2.start() t1.join() # 堵塞 必須縣執行緒結束才可以繼續下一步 t2.join() print('finish') # endregion # region queen 安全執行緒佇列 # 大概的意思是裡面的資料只有鎖的情況下才可以訪問 所以安全 global cc cc = 10 def shownum(delay, queen): queueLock.acquire() data = queen.get() queueLock.release() time.sleep(delay) print(str(data)) queueLock = threading.Lock() workqueen = queue.Queue(10) queueLock.acquire() workqueen.put(cc) queueLock.release() Thread(target=shownum, args=(10, workqueen, )).start() Thread(target=shownum, args=(1.5, workqueen, )).start() # endregion