欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python實現多線程的方式及多條命令并發執行

系統 1647 0

一、概念介紹

Thread 是threading模塊中最重要的類之一,可以使用它來創建線程。有兩種方式來創建線程:一種是通過繼承Thread類,重寫它的run方法;另一種是創建一個threading.Thread對象,在它的初始化函數(__init__)中將可調用對象作為參數傳入.
Thread模塊是比較底層的模塊,Threading模塊是對Thread做了一些包裝的,可以更加方便的被使用。
另外在工作時,有時需要讓多條命令并發的執行, 而不是順序執行。

二、代碼樣例

            
#!/usr/bin/python
# encoding=utf-8
# Filename: thread-extends-class.py
# 直接從Thread繼承,創建一個新的class,把線程執行的代碼放到這個新的 class里
import threading
import time
 
class ThreadImpl(threading.Thread):
 def __init__(self, num):
  threading.Thread.__init__(self)
  self._num = num
 
 def run(self):
  global total, mutex
  
  # 打印線程名
  print threading.currentThread().getName()
 
  for x in xrange(0, int(self._num)):
   # 取得鎖
   mutex.acquire()
   total = total + 1
   # 釋放鎖
   mutex.release()
 
if __name__ == '__main__':
 #定義全局變量
 global total, mutex
 total = 0
 # 創建鎖
 mutex = threading.Lock()
 
 #定義線程池
 threads = []
 # 創建線程對象
 for x in xrange(0, 40):
  threads.append(ThreadImpl(100))
 # 啟動線程
 for t in threads:
  t.start()
 # 等待子線程結束
 for t in threads:
  t.join() 
 
 # 打印執行結果
 print total
          

            
#!/usr/bin/python
# encoding=utf-8
# Filename: thread-function.py
# 創建線程要執行的函數,把這個函數傳遞進Thread對象里,讓它來執行

import threading
import time
 
def threadFunc(num):
 global total, mutex
 
 # 打印線程名
 print threading.currentThread().getName()
 
 for x in xrange(0, int(num)):
  # 取得鎖
  mutex.acquire()
  total = total + 1
  # 釋放鎖
  mutex.release()
 
def main(num):
 #定義全局變量
 global total, mutex
 total = 0
 # 創建鎖
 mutex = threading.Lock()
 
 #定義線程池
 threads = []
 # 先創建線程對象
 for x in xrange(0, num):
  threads.append(threading.Thread(target=threadFunc, args=(100,)))
 # 啟動所有線程
 for t in threads:
  t.start()
 # 主線程中等待所有子線程退出
 for t in threads:
  t.join() 
  
 # 打印執行結果
 print total
 
 
if __name__ == '__main__':
 # 創建40個線程
 main(40)

          
            
#!/usr/bin/python
# encoding=utf-8
# Filename: put_files_hdfs.py
# 讓多條命令并發執行,如讓多條scp,ftp,hdfs上傳命令并發執行,提高程序運行效率
import datetime
import os
import threading

def execCmd(cmd):
 try:
  print "命令%s開始運行%s" % (cmd,datetime.datetime.now())
  os.system(cmd)
  print "命令%s結束運行%s" % (cmd,datetime.datetime.now())
 except Exception, e:
  print '%s\t 運行失敗,失敗原因\r\n%s' % (cmd,e)

if __name__ == '__main__':
 # 需要執行的命令列表
 cmds = ['ls /root',
    'pwd',]
 
 #線程池
 threads = []
 
 print "程序開始運行%s" % datetime.datetime.now()

 for cmd in cmds:
  th = threading.Thread(target=execCmd, args=(cmd,))
  th.start()
  threads.append(th)
   
 # 等待線程運行完畢
 for th in threads:
  th.join()
   
 print "程序結束運行%s" % datetime.datetime.now()


          

以上就是本文的全部內容,希望對大家學習python程序設計有所幫助。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产tv | 日本污污视频在线观看 | 综合久久亚洲 | 国产精品三级a三级三级午夜 | 欧美亚洲在线视频 | 特级毛片8级毛片免费观看 亚洲精品不卡 | 日本高清午夜色wwwσ | 久操网站 | 午夜亚洲 | 午夜视频1000 | 久久精品 | 免费观看视频网站 | 日本高清视频在线三级 | 欧美午夜a级限制福利片 | 毛片国产 | 奇米影视第四色在线 | 日本不卡在线 | 无码AV免费一区二区三区A片 | 欧美日韩高清不卡免费观看 | 久久网精品视频 | 另类国产ts人妖高潮系列视频 | 久草视频官网 | 天天干天天拍天天射 | 91视频丝瓜 | 国产大伊香蕉精品视频 | 一个看片免费视频www | 国产综合在线播放 | 国产精品福利短视在线播放频 | 九色网址 | 成人国产在线 | 久久亚洲综合 | concern超碰在线 | 国产在线观看一区二区三区 | 久久免费精品视频 | 欧美不卡一区二区三区免 | 日本一视频一区视频二区 | 亚洲自偷自偷精品 | 91视频综合网 | 99在线视频观看 | 免费观看一级毛片 | av免费网站在线观看 |