python相似模块用例


Posted in Python onMarch 04, 2016

一: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()

以上就是threading VS Thread、optparser VS getopt 的相互比较,希望对大家学习模块有所帮助。

Python 相关文章推荐
python应用程序在windows下不出现cmd窗口的办法
May 29 Python
浅析python协程相关概念
Jan 20 Python
TensorFlow实现MLP多层感知机模型
Mar 09 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
python中的逆序遍历实例
Dec 25 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
基于python实现把json数据转换成Excel表格
May 07 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
python中zip()函数遍历多个列表方法
Feb 18 Python
教你如何用python开发一款数字推盘小游戏
Apr 14 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 #Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 #Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 #Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 #Python
python套接字流重定向实例汇总
Mar 03 #Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 #Python
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 #Python
You might like
各种咖啡的英文名子是什么
2021/03/03 新手入门
PHP结合jQuery实现找回密码
2015/07/22 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
YII框架http缓存操作示例
2019/04/29 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
js随机生成一个验证码
2017/06/01 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
python持久性管理pickle模块详细介绍
2015/02/18 Python
python动态参数用法实例分析
2015/05/25 Python
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
通过实例解析Python return运行原理
2020/03/04 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
Python函数参数分类原理详解
2020/05/28 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
道德大讲堂实施方案
2014/05/14 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
导游词之天津古文化街
2019/11/09 职场文书