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不规范的日期字符串处理类
Jun 10 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
简单谈谈python的反射机制
Jun 28 Python
python图像常规操作
Nov 11 Python
对pandas replace函数的使用方法小结
May 18 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
python装饰器相当于函数的调用方式
Dec 27 Python
pytorch+lstm实现的pos示例
Jan 14 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 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取进制余数函数代码
2012/01/19 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
javascript中"/"运算符常见错误
2010/10/13 Javascript
自定义jQuery选项卡插件实例
2013/03/27 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
python基于SMTP协议发送邮件
2019/05/31 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
python随机数分布random均匀分布实例
2019/11/27 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
Internet主要有哪些网络群组成
2015/12/24 面试题
总经理职责范文
2013/11/08 职场文书
毕业生求职信的经典写法
2014/01/31 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
家长对老师的感言
2014/03/11 职场文书
学习2014年全国两会心得体会
2014/03/12 职场文书
就业协议书的作用
2014/04/11 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
文艺晚会开场白
2015/05/29 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书