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 json模块使用实例
Apr 11 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
Collatz 序列、逗号代码、字符图网格实例
Jun 22 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
Jun 18 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 Python
使用Python开发冰球小游戏
Apr 30 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
php 友好URL的实现(吐血推荐)
2008/10/04 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
JS模板实现方法
2013/04/03 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
javascript表单验证大全
2015/08/12 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
简单的网页广告特效实例
2017/08/19 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python多图片合并PDF的方法
2019/01/03 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
如何清空python的变量
2020/07/05 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
物业保安主管岗位职责
2013/12/25 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
安全生产月标语
2014/10/07 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
裁员通知
2015/04/25 职场文书
跳高加油稿
2015/07/21 职场文书
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS