pythonはマルチスレッド方式と複数のコマンドを同時に実行します。


一、概念紹介
Threadはthreadingモジュールの中で最も重要なクラスの一つです。これを使ってスレッドを作成することができます。スレッドを作成するには二つの方法があります。一つは、Threadクラスを引き継ぎ、そのルンを書き換える方法です。もう一つは、オブジェクトを作成するための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
%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プログラムの設計を勉強するのに役立ちます。