python類似モジュールの例(一)

15120 ワード

一:threading VS Thread
      周知のように、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()