本文小編為大家詳細介紹“python線程安全的情況有哪些”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當(dāng),希望這篇“python線程安全的情況有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
成都創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),小程序開發(fā),10年建站對廣告制作等多個領(lǐng)域,擁有豐富的網(wǎng)站制作經(jīng)驗。
1、可見性問題,CPU緩存引起的可見性問題,使線程一對共享變量A的操作無法立即被線程二看到,導(dǎo)致線程二獲得舊值。
2、原子問題。
例如,self._balance=self._balance-draw_amount這個語句不是原子CPU執(zhí)行命令。這個語句的執(zhí)行有三個CPU命令。
實例
import threading class Account: # 定義構(gòu)造函數(shù) 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") # 兩個線程并發(fā)取錢 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線程安全的情況有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁標(biāo)題:python線程安全的情況有哪些
新聞來源:http://www.rwnh.cn/article32/jsdosc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站改版、網(wǎng)站內(nèi)鏈、電子商務(wù)、企業(yè)建站、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)