新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Python多線程如何解決公車收費(fèi)中的問(wèn)題
Python多線程有很廣泛的應(yīng)用空間,首先我們來(lái)看看如何進(jìn)行相關(guān)的應(yīng)用。下面我們就來(lái)看看在生活中的案例。希望大家有些啟發(fā)。最后,模擬一個(gè)公交地鐵IC卡繳車費(fèi)的Python多線程程序。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比善右網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式善右網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋善右地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
有10個(gè)讀卡器,每個(gè)讀卡器收費(fèi)器每次扣除用戶一塊錢進(jìn)入總賬中,每讀卡器每天一共被刷10000000次。賬戶原有100塊。所以最后的總賬應(yīng)該為10000100。先不使用互斥鎖來(lái)進(jìn)行鎖定(注釋掉了鎖定代碼),看看后果如何。
- import time,datetime
- import threading
- def worker(a_tid,a_account):
- global g_mutex
- print "Str " , a_tid, datetime.datetime.now()
- for i in range(1000000):
- #g_mutex.acquire()
- a_account.deposite(1)
- #g_mutex.release()
- print "End " , a_tid , datetime.datetime.now()
- class Account:
- def __init__ (self, a_base ):
- self.m_amount=a_base
- def deposite(self,a_amount):
- self.m_amount+=a_amount
- def withdraw(self,a_amount):
- self.m_amount-=a_amount
- if __name__ == "__main__":
- global g_mutex
- count = 0
- dstart = datetime.datetime.now()
- print "Main Thread Start At: " , dstart
- #init thread_pool
- thread_pool = []
- #init mutex
- g_mutex = threading.Lock()
- # init thread items
- acc = Account(100)
- for i in range(10):
- th = threading.Thread(target=worker,args=(i,acc) ) ;
- thread_pool.append(th)
- # start threads one by one
- for i in range(10):
- thread_pool[i].start()
- #collect all threads
- for i in range(10):
- threading.Thread.join(thread_pool[i])
- dend = datetime.datetime.now()
- print "count=",acc.m_amount
- print "Main Thread End at: " ,dend , " time span " ,
dend-dstart;
上面就是對(duì)相關(guān)Python多線程技術(shù)的介紹。
【編輯推薦】
- Python匹配如何才能完成匹配細(xì)節(jié)
- Python正則表達(dá)式十種相關(guān)的匹配方法
- Python字符串替換如何才能進(jìn)行字符的拆分
- 對(duì)Python函數(shù)的局部變量的介紹
- Python編程語(yǔ)言具有相當(dāng)高的適應(yīng)能力
文章標(biāo)題:Python多線程如何解決公車收費(fèi)中的問(wèn)題
文章網(wǎng)址:http://m.fisionsoft.com.cn/article/dhsdjjs.html


咨詢
建站咨詢
