您好,登錄后才能下訂單哦!
這篇文章主要介紹python線程安全有哪些情況,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
1、可見性問題,CPU緩存引起的可見性問題,使線程一對共享變量A的操作無法立即被線程二看到,導致線程二獲得舊值。
2、原子問題。
例如,self._balance=self._balance-draw_amount這個語句不是原子CPU執行命令。這個語句的執行有三個CPU命令。
實例
import threading class Account: # 定義構造函數 def __init__(self, account_no, balance): """ :param account_no: 賬戶 :param balance: 余額 """ self.account_no = account_no self._balance = balance def draw(self, draw_amount): """ :param draw_amount: 需要取的錢 :return: """ if self._balance > draw_amount: print(threading.current_thread().getName() + '從' + self.account_no + " 取錢成功,賬戶取出金額是:" + str( draw_amount) + "\n") self._balance = self._balance - draw_amount print('賬戶余額是', self._balance) else: print(threading.current_thread().getName() + '從' + self.account_no + " 取錢失敗\n") # 兩個線程并發取錢 account = Account('賬戶一', 2000) threading.Thread(target=account.draw, name='線程一', args=(800,)).start() threading.Thread(target=account.draw, name='線程二', args=(800,)).start() threading.Thread(target=account.draw, name='線程三', args=(800,)).start()
以上是“python線程安全有哪些情況”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。