国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python多線程編程之多線程加鎖操作示例

2020-01-04 14:34:58
字體:
來源:轉載
供稿:網友

本文實例講述了Python多線程編程之多線程加鎖操作。分享給大家供大家參考,具體如下:

Python語言本身是支持多線程的,不像PHP語言。

下面的例子是多個線程做同一批任務,任務總是有task_num個,每次線程做一個任務(print),做完后繼續取任務,直到所有任務完成為止。

# -*- coding:utf-8 -*-#! python2import threadingstart_task = 0task_num = 10000mu = threading.Lock()  ###通過工廠方法獲取一個新的鎖對象class MyThread(threading.Thread):  ###類MyThread繼承基類threading.Thread  def run(self): ##線程啟動的入口函數,子類需重寫    global start_task    global mu    global start_task    while start_task < task_num:  ##如果任務沒有完成,則繼續      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循環創建6個線程    t = MyThread() ##創建線程    thread_all.append(t)    t.start()  ###啟動線程  for i in range(6):    thread_all[i].join()  ##等待線程結束if __name__ == "__main__":  test()

運行上述代碼,則輸出1~9999

測試加鎖與不加鎖效果:將任務數設置為1千萬或者以上,在多核機器上將print輸出分別保存,就能說明問題。

希望本文所述對大家Python程序設計有所幫助。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 恩平市| 五莲县| 锡林浩特市| 天全县| 怀柔区| 晋州市| 屯留县| 新疆| 南康市| 武冈市| 葵青区| 连云港市| 墨江| 积石山| 永川市| 全南县| 孝昌县| 益阳市| 绩溪县| 张家口市| 安康市| 永丰县| 南安市| 绿春县| 绥棱县| 陆河县| 洛川县| 香港 | 克山县| 买车| 南平市| 和田市| 伊春市| 光泽县| 土默特右旗| 阿尔山市| 陆丰市| 迭部县| 无锡市| 眉山市| 新巴尔虎左旗|