Python创建多线程的三种方法

  • thread模块函数式创建线程
  • 继承threading类创建多线程
  • threading模块函数式创建线程
  • 使用总结

thread模块函数式创建线程

调用thread模块中的start_new_thread()函数来产生新线程。语法如下:
thread.start_new_thread ( function, args[, kwargs] )
参数说明:

  • function - 线程函数。
  • args - 传递给线程函数的参数,他必须是个tuple类型。
  • kwargs - 可选参数。

一言不合上代码:

#-*- coding:utf-8 -*-
import thread
import time
def A(para):for i in range(5):print paratime.sleep(0.5)def B(para):for i in range(5):print paratime.sleep(0.2)if __name__ == '__main__':thread.start_new_thread(A, ('我是线程A',))thread.start_new_thread(B, ('我是线程B',))while 1:pass

结果如下:

PS:我们可以看到,B线程先执行完了,因为我们设置了睡眠时间为0.2秒,A线程等待时间为0.5秒,虽然先运行的A线程,但是在等待的同时会自动切换到B线程,充分利用了CPU的等待时间,关于多线程,一般在IO密集型的场合使用比较多,比如运行爬虫的时候,关于多线程、多进程、多协程的适用场合,后面我会新建一个文章深入研究。

继承threading类创建多线程

继承线程类threading.thread,再重载成员函数run,程序处理的代码写在函数run中,最后再调用start()方法来运行线程
代码如下:

#-*- coding:utf-8 -*-
import threading
import time
'''
获得当前线程的名称
threading.current_thread().getName()
threading.current_thread().name
'''
class A(threading.Thread):def __init__(self):threading.Thread.__init__(self)def run(self):for i in range(5):print '我是线程A',threading.current_thread().getName()time.sleep(0.5)class B(threading.Thread):def __init__(self):threading.Thread.__init__(self)def run(self):for i in range(5):print '我是线程B',threading.current_thread().nametime.sleep(0.2)
t1=A()
t1.start()
t2=B()
t2.start()

结果如下:

threading模块函数式创建线程

创建线程时,传入一个函数,用于线程执行,比起通过类继承创建多线程,函数式创建线程有更好的灵活性。
代码如下:

#encoding:utf-8
import threading
import time
import randomdef run(sec):time.sleep(sec)print'当前线程的名字是: ', threading.current_thread().nameif __name__ == '__main__':print'这是主线程:', threading.current_thread().namethread_list = []'''创建多个线程'''for i in range(5):t = threading.Thread(target=run,args=(random.random(),))thread_list.append(t)#循环这5个线程,调用相应的run方法for t in thread_list:t.start()

结果如下:

使用总结

关于threading和thread的使用总结:threading 模块介绍:1.threading 是对thread模块的再封装2.threading 模块支持守护线程3.threading.Thread(target,args)  创建线程,但没有启动线程4..start()   开启线程5..join()     挂起线程6.当主线程执行完退出时,默认重要的子线程完成后再退出在thread模块中1.thread.start_new_thread()方法不仅创建了线程而且启动了线程2.当主线程执行完退出时,其他的线程都会无警告,无保存的死亡

Python创建多线程的三种方法相关推荐

  1. Java创建多线程的三种方法

    Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...

  2. python实现多线程的三种方法threading.Thread(模块)的继承实现和函数实现;以及concurrent.futures模块的线程池实现

    1.threading.Thread模块继承实现: import threading import timeclass TestThread(threading.Thread):def __init_ ...

  3. java多线程w3c_Java创建多线程的三种方式

    前言 这篇文章主要讲述线程的概念.组成.Java创建多线程的三种方式以及线程的类型. 线程概念 线程和进程的区别 **进程:**正在运行的程序,例如:你打开 的qq音乐.exe程序,其由PCB(进程控 ...

  4. python调用cmd命令释放端口_详解python调用cmd命令三种方法

    目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...

  5. Java 创建线程的三种方法比较

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...

  6. 测试Python下载图片的三种方法

    简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理.本文测试了urllib, request两个软件包对图片进行下载效果.如果图片原网页有了防止下载机制,是无法下载图片. ...

  7. python学习音频-详解python播放音频的三种方法

    第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...

  8. python可以播放音乐吗_详解python播放音频的三种方法

    第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...

  9. Spark创建DataFrame的三种方法

    跟关系数据库的表(Table)一样,DataFrame是Spark中对带模式(schema)行列数据的抽象.DateFrame广泛应用于使用SQL处理大数据的各种场景.创建DataFrame有很多种方 ...

最新文章

  1. select初始化默认选项
  2. 用CMake编译运行在网上下载的源文件src
  3. OpenCV人脸识别Eigen算法源码分析
  4. markdown 表格对齐方式、换行、内嵌列表、...
  5. 程序员能力提升:你应该知道的那些编程原则!!
  6. 转:RabbitMQ 消息队列特性知多少
  7. java中methods方法_java中Class.getMethod方法
  8. 这半年来的飞秋官网磕磕碰碰
  9. 信息必填的php,php - {“成功”:0,“消息”:“必填字段丢失”}在本地主机上测试文件 - 堆栈内存溢出...
  10. 西门子s7 计算机通讯,PLC与计算机通讯连接
  11. HTML浅学入门---基础知识 (1)基本规则
  12. sublime怎么配置python环境_在Sublime Editor中配置Python环境的详细教程
  13. 回溯---数字键盘组合
  14. 山西财经大学的计算机科学与技术怎么样,山西财经大学计算机科学与技术专业2017年在福建理科高考录取最低分数线...
  15. 数学建模 线性规划报告_春哥带你学建模数学建模国赛基础入门班(适合小白/零基础)...
  16. 历尽磨难,探索未来生活的2014年
  17. Typhon之异常错误克星TLSException
  18. PSINS不可交换(圆锥/划桨)误差补偿
  19. word利用mathtype进行公式分章节编号和引用
  20. 应用预测建模第六章-线性回归-预测化合物溶解度练习-R语言(多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网)

热门文章

  1. 智能,好用,免费! 机器人接口分享,API,认知智能机器人接口。
  2. mysql 死锁 navicat
  3. python拆分kml文件
  4. 水墨简静态PPT模板
  5. 用matlab打开ppt模板,Matlab语言及其在电子信息工程中的应用ppt模板
  6. ppt文件转换器免费下载
  7. 教你如何不打线稿,用马克笔画出民居建筑
  8. 【karle 专栏】2019一起做个App吧。「掘金技术征文」
  9. zap日志写入通道被覆盖
  10. 乔布斯 :斯坦福大学演讲