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中偏函数partial用法实例分析
Jul 08 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
Python 函数返回值的示例代码
Mar 11 Python
python日志logging模块使用方法分析
May 23 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
Python argparse模块应用实例解析
Nov 15 Python
解决pycharm上的jupyter notebook端口被占用问题
Dec 17 Python
Python打印特殊符号及对应编码解析
May 07 Python
python 利用Pyinstaller打包Web项目
Oct 23 Python
Python字典的基础操作
Nov 01 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 URL验证正则表达式
2011/07/19 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
django页面跳转问题及注意事项
2019/07/18 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
模具数控专业自荐信
2014/01/27 职场文书
安全大检查反思材料
2014/01/31 职场文书
表演方阵解说词
2014/02/08 职场文书
行政部岗位职责范本
2014/03/13 职场文书
安全例会汇报材料
2014/08/23 职场文书
2014年宣传工作总结
2014/11/18 职场文书
财政局个人年终总结
2015/03/03 职场文书
张思德观后感
2015/06/09 职场文书