python類似モジュールの例(一)
15120 ワード
一:threading VS Thread
周知のように、pythonはマルチスレッドをサポートし、nativeのスレッドであり、threadingはThreadモジュールをパッケージ化し、より多方面に使用することができ、threadingモジュールでは主にいくつかのスレッド操作をオブジェクト化し、Threadのクラスを作成している.
スレッドを使用するには2つのモードがあります.1つはスレッドを作成して実行する関数です.この関数をThreadオブジェクトに渡して実行させます.1つは、Threadから直接継承し、新しいclassを作成し、スレッドが実行するコードをこの新しいクラスに入れます.たとえば、次のようにします.
①Threadによるマルチスレッド化
①getoptモジュールを使用してUnixモードのコマンドラインオプションを処理する
getoptモジュールはコマンドラインオプションとパラメータ、すなわちsys.argvを抽出するために使用され、コマンドラインオプションはプログラムのパラメータをより柔軟にし、短いオプションモードと長いオプションモードをサポートする.
例:python scriptname.py–f"hello"–directory-prefix="/home"–t --format ‘a’‘b’
getopt関数のフォーマット:getopt.getopt([コマンドラインパラメータリスト],[短いオプション],[長いオプションリスト])
短い選択項目名の後ろにあるコロン(:)は、このオプションに追加のパラメータが必要であることを示します.
長い選択項目名の後に等号(=)が付いていることは、このオプションに追加のパラメータが必要であることを示します.
optionsおよびargsを返します
optionsはパラメータオプションとそのvalueのメタグループ('-f','hello'),('-t','),('-format','),('-directory-prefix','/home'))である.
argsは有用なパラメータを除いた他のコマンドライン入力(‘a’,‘b’)
周知のように、pythonはマルチスレッドをサポートし、nativeのスレッドであり、threadingはThreadモジュールをパッケージ化し、より多方面に使用することができ、threadingモジュールでは主にいくつかのスレッド操作をオブジェクト化し、Threadのクラスを作成している.
スレッドを使用するには2つのモードがあります.1つはスレッドを作成して実行する関数です.この関数をThreadオブジェクトに渡して実行させます.1つは、Threadから直接継承し、新しいclassを作成し、スレッドが実行するコードをこの新しいクラスに入れます.たとえば、次のようにします.
①Threadによるマルチスレッド化
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import string
import threading
import time
def threadMain(a):
global count,mutex
#
threadname = threading.currentThread().getName()
for x in xrange(0,int(a)):
#
mutex.acquire()
count += 1
#
mutex.release()
print threadname,x,count
time.sleep()
def main(num):
global count,mutex
threads = []
count = 1
#
mutex = threading.Lock()
#
for x in xrange(0,num):
threads.append(threading.Thread(target = threadMain,args=(10,)))
for t in threads:
t.start()
for t in threads:
t.join()
if __name__ == "__main__":
num = 4
main(num);
②threadingによるマルチスレッド化#!/usr/bin/env python
#-*- coding:utf-8 -*-
import threading
import time
class Test(threading.Thread):
def __init__(self,num):
threading.Thread.__init__(self):
self._run_num = num
def run(self):
global count,mutex
threadName = threading.currentThread.getName()
for x in xrange(0,int(self._run_num)):
mutex.acquire()
count += 1
mutex.release()
print threadName,x,count
time.sleep(1)
if __name__ == "__main__":
global count,mutex
threads = []
num = 4
count = 1
mutex.threading.Lock()
for x in xrange(o,num):
threads.append(Test(10))
#
for t in threads:
t.start()
#
for t in threads:
t.join()
二:optparser VS getopt①getoptモジュールを使用してUnixモードのコマンドラインオプションを処理する
getoptモジュールはコマンドラインオプションとパラメータ、すなわちsys.argvを抽出するために使用され、コマンドラインオプションはプログラムのパラメータをより柔軟にし、短いオプションモードと長いオプションモードをサポートする.
例:python scriptname.py–f"hello"–directory-prefix="/home"–t --format ‘a’‘b’
getopt関数のフォーマット:getopt.getopt([コマンドラインパラメータリスト],[短いオプション],[長いオプションリスト])
短い選択項目名の後ろにあるコロン(:)は、このオプションに追加のパラメータが必要であることを示します.
長い選択項目名の後に等号(=)が付いていることは、このオプションに追加のパラメータが必要であることを示します.
optionsおよびargsを返します
optionsはパラメータオプションとそのvalueのメタグループ('-f','hello'),('-t','),('-format','),('-directory-prefix','/home'))である.
argsは有用なパラメータを除いた他のコマンドライン入力(‘a’,‘b’)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import getopt
def Usage():
print "Usage: %s [-a|-0|-c] [--help|--output] args..."%sys.argv[0]
if __name__ == "__main__":
try:
options,args = getopt.getopt(sys.argv[1:],"ao:c",['help',"putput="]):
print options
print "
"
print args
for option,arg in options:
if option in ("-h","--help"):
Usage()
sys.exit(1)
elif option in ('-t','--test'):
print "for test option"
else:
print option,arg
except getopt.GetoptError:
print "Getopt Error"
Usage()
sys.exit(1)
②optparserモジュール#!/usr/bin/env python
# -*- coding:utf-8 -*-
import optparser
def main():
usage = "Usage: %prog [option] arg1,arg2..."
parser = OptionParser(usage=usage)
parser.add_option("-v","--verbose",action="store_true",dest="verbose",default=True,help="make lots of noise [default]")
parser.add_option("-q","--quiet",action="store_false",dest="verbose",help="be vewwy quiet (I'm hunting wabbits)")
parser.add_option("-f","--filename",metavar="FILE",help="write output to FILE")
parser.add_option("-m","--mode",default="intermediate",help="interaction mode: novice, intermediate,or expert [default: %default]")
(options,args) = parser.parse_args()
if len(args) != 1:
parser.error("incorrect number of arguments")
if options.verbose:
print "reading %s..." %options.filename
if __name__ == "__main__":
main()