pythonはマルチスレッド方式と複数のコマンドを同時に実行します。
一、概念紹介
Threadはthreadingモジュールの中で最も重要なクラスの一つです。これを使ってスレッドを作成することができます。スレッドを作成するには二つの方法があります。一つは、Threadクラスを引き継ぎ、そのルンを書き換える方法です。もう一つは、オブジェクトを作成するためのthreading.Threadの初期化関数です。init_パラメータとしてオブジェクトを呼び出します。
Threadモジュールは一番下のモジュールです。ThreadingモジュールはThreadにいくつかの包装をしています。もっと便利に使用できます。
また、作業時には、順番ではなく複数の命令を同時に実行させる必要があります。
二、コードのサンプル
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プログラムの設計を勉強するのに役立ちます。