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中List的sort方法指南
Sep 01 Python
Python fileinput模块使用介绍
Nov 30 Python
Python socket编程实例详解
May 27 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
python如何将图片转换为字符图片
Aug 19 Python
Python实现求一个集合所有子集的示例
May 04 Python
Python读取分割压缩TXT文本文件实例
Feb 14 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
详解python的xlwings库读写excel操作总结
Feb 26 Python
python中24小时制转换为12小时制的方法
Jun 18 Python
Python加密技术之RSA加密解密的实现
Apr 08 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中eval函数的危害与正确禁用方法
2014/06/30 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
JavaScript CSS修改学习第一章 查找位置
2010/02/19 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
python读取csv文件示例(python操作csv)
2014/03/11 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
澳洲的服装老品牌:SABA
2018/02/06 全球购物
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
大学生全国两会报告感想
2014/03/17 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
教师考察材料范文
2014/06/03 职场文书
农村门前三包责任书
2014/07/25 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
2014年人民警察入党思想汇报
2014/10/12 职场文书
公司授权委托书
2014/10/17 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
个人租房协议书
2014/11/28 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
个人道歉信大全
2019/04/11 职场文书
MySQL RC事务隔离的实现
2022/03/31 MySQL
MySQL数据管理操作示例讲解
2022/12/24 MySQL