Python多線程編程之多線程加鎖操作示例
本文實(shí)例講述了Python多線程編程之多線程加鎖操作。分享給大家供大家參考,具體如下:
Python語(yǔ)言本身是支持多線程的,不像PHP語(yǔ)言。
下面的例子是多個(gè)線程做同一批任務(wù),任務(wù)總是有task_num個(gè),每次線程做一個(gè)任務(wù)(print),做完后繼續(xù)取任務(wù),直到所有任務(wù)完成為止。
# -*- coding:utf-8 -*-
#! python2
import threading
start_task = 0
task_num = 10000
mu = threading.Lock() ###通過(guò)工廠方法獲取一個(gè)新的鎖對(duì)象
class MyThread(threading.Thread): ###類(lèi)MyThread繼承基類(lèi)threading.Thread
def run(self): ##線程啟動(dòng)的入口函數(shù),子類(lèi)需重寫(xiě)
global start_task
global mu
global start_task
while start_task < task_num: ##如果任務(wù)沒(méi)有完成,則繼續(xù)
if mu.acquire(): ##加鎖
if start_task < task_num:
print start_task
start_task = start_task + 1
mu.release() ##釋放鎖
def test():
thread_all = []
for i in range(6): ##for循環(huán)創(chuàng)建6個(gè)線程
t = MyThread() ##創(chuàng)建線程
thread_all.append(t)
t.start() ###啟動(dòng)線程
for i in range(6):
thread_all[i].join() ##等待線程結(jié)束
if __name__ == "__main__":
test()
運(yùn)行上述代碼,則輸出1~9999
測(cè)試加鎖與不加鎖效果:將任務(wù)數(shù)設(shè)置為1千萬(wàn)或者以上,在多核機(jī)器上將print輸出分別保存,就能說(shuō)明問(wèn)題。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫(kù)程序設(shè)計(jì)入門(mén)教程》及《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python中unittest模塊做UT(單元測(cè)試)使用實(shí)例
這篇文章主要介紹了Python中unittest模塊做UT(單元測(cè)試)使用實(shí)例,本文直接給出待測(cè)試的類(lèi)、測(cè)試類(lèi)和測(cè)試結(jié)果以及測(cè)試總結(jié),需要的朋友可以參考下2015-06-06
如何使用Python在2秒內(nèi)評(píng)估國(guó)際象棋位置詳解
關(guān)心編程語(yǔ)言的使用趨勢(shì)的人都知道,最近幾年,國(guó)內(nèi)最火的兩種語(yǔ)言非Python與Go莫屬,下面這篇文章主要給大家介紹了關(guān)于如何使用Python在2秒內(nèi)評(píng)估國(guó)際象棋位置的相關(guān)資料,需要的朋友可以參考下2022-05-05
Python實(shí)現(xiàn)批量把SVG格式轉(zhuǎn)成png、pdf格式的代碼分享
這篇文章主要介紹了Python實(shí)現(xiàn)批量把SVG格式轉(zhuǎn)成png、pdf格式的代碼分享,本文代碼需要引用一個(gè)第三方模塊cairosvg,需要的朋友可以參考下2014-08-08
Tensorflow中k.gradients()和tf.stop_gradient()用法說(shuō)明
這篇文章主要介紹了Tensorflow中k.gradients()和tf.stop_gradient()用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
使用優(yōu)化器來(lái)提升Python程序的執(zhí)行效率的教程
這篇文章主要介紹了使用優(yōu)化器來(lái)提升Python程序的執(zhí)行效率的教程,包括編寫(xiě)計(jì)時(shí)器和使用內(nèi)建的優(yōu)化器等,需要的朋友可以參考下2015-04-04
使用Python實(shí)現(xiàn)企業(yè)微信通知功能案例分析
這篇文章主要介紹了使用Python實(shí)現(xiàn)企業(yè)微信通知功能,主要目的是通過(guò)企業(yè)微信應(yīng)用給企業(yè)成員發(fā)消息,通過(guò)案例分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04

