python相似模块用例

一:threading VS Thread

      众所周知,python是支持多线程的,而且是native的线程,其中threading是对Thread模块做了包装,可以更加方面的被使用,threading模块里面主要对一些线程操作对象化了,创建了Thread的类。

      使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行,一种是直接从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 "\n"
        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()

时间: 2024-10-27 09:58:16

python相似模块用例的相关文章

python——常用模块

time.asctime(time.localtime(1234324422)) python--常用模块 1 什么是模块: 模块就是py文件 2 import time #导入时间模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行"type(time.time())",返回的是float类型.

python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等) #http://www.cnblogs.com/BeginMan/p/3328172.html #以常见的摘要算法MD5为例,计算出一个字符串的MD5值 import hashlib m = hashlib.md5() #创建hash对象 m.update('xiaodeng') #更新哈希对象以字符串参数 print m.

python 深入模块和包

模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本的方式执行,它们也会运行.) 每个模块都有自己的私有符号表, 模块内定义的所有函数用其作为全局符号表. 被导入的模块的名字放在导入模块的全局符号表中. import 语句的一个变体直接从被导入的模块中导入名字到导入模块的符号表中. 例如: >>> >>> from fibo

简单实现并发:python concurrent模块

可以使用python 3中的concurrent模块,如果python环境是2.7的话,需要下载https://pypi.python.org/packages/source/f/futures/futures-2.1.6.tar.gz#md5=cfab9ac3cd55d6c7ddd0546a9f22f453 此futures包即可食用concurrent模块. 官方文档:http://pythonhosted.org//futures/ 对于python来说,作为解释型语言,Python的解释

python argparse模块

python argparse 模块的功能是对命令行进行解析,检查命令行是否符合预定义的格式. 使用方法: 1.导入argparse模块   import argparse 2.创建argparse对象   parser = argparse.ArgumentParser() 3.添加命令行相关参数.选项  parser.add_argument("...") 4.解析    parser.parse_args() 例一:(删除指定的zabbix screen) #!/usr/bin/

2如何安装Python第三方模块

如何安装Python第三方模块 Python官方为我们提供了第三方库,那么如何安装这些库呢? 安装第三方库有两种方式: 第一种就是使用python自带的仓库pip进安装 第二种就是使用源码进行安装 PIP方式安装 首先用yum安装python-pip软件包 [[email protected] ~]# yum  install python-pip 安装完成之后可以使用pip -V查看安装版本 [[email protected] ~]# pip -V pip 7.1.0 from /usr/l

python常用模块初始

1.getpass(密文输入) import getpass                                    #导入getpass模块,用于密文输入 name = input("input your name:") passwd = getpass.getpass("input your passwd:")    #密文输入 print (name,passwd) 2.OS模块 #!/bin/bash/env python #_*_ codin

python 使用模块

Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env python # -*- coding: utf-8 -*- ' a test module ' __author__ = 'Michael Liao' import sys def test(): args = sys.argv if len(args)==1: print 'Hello, world!' elif len(a

python 各模块

01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支持模块 12 _ _builtin_ _ 模块 121 使用元组或字典中的参数调用函数 1211 Example 1-1 使用 apply 函数 1212 Example 1-2 使用 apply 函数传递关键字参数 1213 Example 1-3 使用 apply 函数调用基类的构造函数 122