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编写简单的端口扫描器的实例分享
Dec 18 Python
Python中的Descriptor描述符学习教程
Jun 02 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
opencv python 基于KNN的手写体识别的实例
Aug 03 Python
Pandas过滤dataframe中包含特定字符串的数据方法
Nov 07 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
Python 调用有道翻译接口实现翻译
Mar 02 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
Python Django路径配置实现过程解析
Nov 05 Python
Python的信号库Blinker用法详解
Dec 31 Python
pycharm 快速解决python代码冲突的问题
Jan 15 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实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
javascript 学习之旅 (3)
2009/02/05 Javascript
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
简单了解Python中的几种函数
2017/11/03 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
python查看列的唯一值方法
2018/07/17 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
Python with标签使用方法解析
2020/01/17 Python
通过实例解析Python return运行原理
2020/03/04 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
市场营销求职信范文
2014/02/21 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
婚前协议书范本
2014/04/15 职场文书
高中教师个人工作总结
2015/02/10 职场文书
未婚证明格式
2015/06/15 职场文书
结婚幸福感言
2015/08/01 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书