python实现多线程的两种方式


Posted in Python onMay 22, 2016

目前python 提供了几种多线程实现方式 thread,threading,multithreading ,其中thread模块比较底层,而threading模块是对thread做了一些包装,可以更加方便的被使用。
2.7版本之前python对线程的支持还不够完善,不能利用多核CPU,但是2.7版本的python中已经考虑改进这点,出现了multithreading  模块。threading模块里面主要是对一些线程的操作对象化,创建Thread的class。一般来说,使用线程有两种模式:

A 创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行;
B 继承Thread类,创建一个新的class,将要执行的代码 写到run函数里面。

本文介绍两种实现方法。
第一种 创建函数并且传入Thread 对象中
t.py 脚本内容

import threading,time
from time import sleep, ctime
def now() :
  return str( time.strftime( '%Y-%m-%d %H:%M:%S' , time.localtime() ) )
def test(nloop, nsec):
  print 'start loop', nloop, 'at:', now()
sleep(nsec)
  print 'loop', nloop, 'done at:', now()
def main():
  print 'starting at:',now()
  threadpool=[]
for i in xrange(10):
    th = threading.Thread(target= test,args= (i,2))
    threadpool.append(th)
for th in threadpool:
    th.start()
for th in threadpool :
    threading.Thread.join( th )
  print 'all Done at:', now()
if __name__ == '__main__':
    main()

 thclass.py 脚本内容:

import threading ,time
from time import sleep, ctime
def now() :
  return str( time.strftime( '%Y-%m-%d %H:%M:%S' , time.localtime() ) )
class myThread (threading.Thread) :
"""docstring for myThread"""
   def __init__(self, nloop, nsec) :
     super(myThread, self).__init__()
     self.nloop = nloop
     self.nsec = nsec
   def run(self):
     print 'start loop', self.nloop, 'at:', ctime()
sleep(self.nsec)
     print 'loop', self.nloop, 'done at:', ctime()
def main():
   thpool=[]
   print 'starting at:',now()
for i in xrange(10):
     thpool.append(myThread(i,2))
for th in thpool:
     th.start()
for th in thpool:
     th.join()
   print 'all Done at:', now()
if __name__ == '__main__':
    main()

以上就是本文的全部内容吗,希望对大家学习python程序设计有所帮助。

Python 相关文章推荐
Python urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
python实现简单名片管理系统
Nov 30 Python
python设计tcp数据包协议类的例子
Jul 23 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
使用python切片实现二维数组复制示例
Nov 26 Python
Python正则表达式急速入门(小结)
Dec 16 Python
Python selenium抓取虎牙短视频代码实例
Mar 02 Python
python实现引用其他路径包里面的模块
Mar 09 Python
python归并排序算法过程实例讲解
Nov 04 Python
pandas map(),apply(),applymap()区别解析
Feb 24 Python
python实现简单购物商城
May 21 #Python
python字符串的常用操作方法小结
May 21 #Python
python实现用户登录系统
May 21 #Python
python列表的常用操作方法小结
May 21 #Python
bat和python批量重命名文件的实现代码
May 19 #Python
批处理与python代码混合编程的方法
May 19 #Python
python实现汉诺塔递归算法经典案例
Mar 01 #Python
You might like
PHP 加密解密内部算法
2010/04/22 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
使用bootstrap3开发响应式网站
2016/05/12 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python计算auc指标实例
2017/07/13 Python
python实现批量修改文件名代码
2017/09/10 Python
python的turtle库使用详解
2019/05/10 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
PyQt5组件读取参数的实例
2019/06/25 Python
Python3远程监控程序的实现方法
2019/07/15 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
python编写实现抽奖器
2020/09/10 Python
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
实习自我鉴定模板
2013/09/28 职场文书
仓库保管员岗位职责
2013/12/20 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
法制报告会主持词
2014/04/02 职场文书
初三班主任寄语大全
2014/04/04 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python