python多线程编程(2): 线程的创建、启动、挂起和退出
From: http://www.cnblogs.com/holbrook/archive/2012/03/02/2376940.html
如上一节,python的threading.Thread类有一个run方法,用于定义线程的功能函数,可以在自己的线程类中覆盖该方法。而创建自己的线程实例后,通过Thread类的start方法,可以启动该线程,交给python虚拟机进行调度,当该线程获得执行的机会时,就会调用run方法执行线程。让我们开始第一个例子:
# encoding: UTF-8import threadingimport time class MyThread(threading.Thread): def run(self): for i in range(3): time.sleep(1) msg = "I'm "+self.name+' @ '+str(i) print msgdef test(): for i in range(5): t = MyThread() t.start()if __name__ == '__main__': test()
执行结果:
I'm Thread-1 @ 0
I'm Thread-2 @ 0
I'm Thread-5 @ 0
I'm Thread-3 @ 0
I'm Thread-4 @ 0
I'm Thread-3 @ 1
I'm Thread-4 @ 1
I'm Thread-5 @ 1
I'm Thread-1 @ 1
I'm Thread-2 @ 1
I'm Thread-4 @ 2
I'm Thread-5 @ 2
I'm Thread-2 @ 2
I'm Thread-1 @ 2
I'm Thread-3 @ 2
从代码和执行结果我们可以看出,多线程程序的执行顺序是不确定的。当执行到sleep语句时,线程将被阻塞(Blocked),到sleep结束后,线程进入就绪(Runnable)状态,等待调度。而线程调度将自行选择一个线程执行。上面的代码中只能保证每个线程都运行完整个run函数,但是线程的启动顺序、run函数中每次循环的执行顺序都不能确定。
此外需要注意的是:
1.每个线程一定会有一个名字,尽管上面的例子中没有指定线程对象的name,但是python会自动为线程指定一个名字。
2.当线程的run()方法结束时该线程完成。
3. 无法控制线程调度程序,但可以通过别的方式来影响线程调度的方式。
上面的例子只是简单的演示了创建了线程、主动挂起以及退出线程。下一节,将讨论用互斥锁进行线程同步。
python多线程编程(2): 线程的创建、启动、挂起和退出相关推荐
- 多线程编程(2): 线程的创建、启动、挂起和退出
python多线程编程(2): 线程的创建.启动.挂起和退出 如上一节,python的threading.Thread类有一个run方法,用于定义线程的功能函数,可以在自己的线程类中覆盖该方法.而创建 ...
- Python多线程编程之线程子类化
Python多线程编程之线程子类化 基本思路 Threading模块简介 **MyThread**主要代码 实例 所有代码 运行结果 基本思路 导入Threading模块下的Thread类,将其子类化 ...
- python多线程编程(8):线程的合并和后台线程
From: http://www.cnblogs.com/holbrook/archive/2012/03/21/2410120.html 线程的合并 python的Thread类中还提供了join( ...
- python多线程编程(7):线程间通信
From: http://www.cnblogs.com/holbrook/archive/2012/03/21/2409031.html 很多时候,线程之间会有互相通信的需要.常见的情形是次要线程为 ...
- VC多线程编程之线程创建与示例
一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX ...
- python 多线程 setdaemon_python使用Thread的setDaemon启动后台线程教程
多线程编程当中, 线程的存在形态比较抽象. 通过前台线程后台线程, 可以有效理解线程运行顺序.(复杂的多线程程序可以通过设置线程优先级实现) 后台线程与前台线程的直接区别是, 1)setDaemon( ...
- python多线程编程(1): python对多线程的支持
From: http://www.cnblogs.com/holbrook/archive/2012/03/01/2376408.html 前面介绍过多线程的基本概念,理解了这些基本概念,掌握pyth ...
- python多线程编程_python多线程编程(1): python对多线程的支持
前面介绍过多线程的基本概念,理解了这些基本概念,掌握python多线程编程就比较容易了. 在开始之前,首先要了解一下python对多线程的支持. 虚拟机层面 Python虚拟机使用GIL(Global ...
- Python多线程编程---(1)threading 模块 Thread 类
全文参考:Python多线程编程(一):threading 模块 Thread 类的用法详解_frank 的专栏-CSDN博客 最近看了下团队自动化测试用例的代码,里面有涉及并行处理的逻辑,主要是基于 ...
最新文章
- 关于NB-IoT的十大问题和答案【转】
- sharepoint 2010 如何使用sharepoint多媒体视频播放media webpart功能
- 深度学习(28)随机梯度下降六: 多输出感知机梯度
- Web Service视频分享
- js udp通信_Node.JS实战17:开发一个正向代理服务器
- python实现自动打电话软件_python拨打电话
- 2020年数据库系统工程师下午真题及答案解析
- 【Adobe Premiere Pro 2020】pr模板下载和pr使用模板创建视频、pr调色说明、pr全景视频编辑说明、pr无缝转场特效制作流程、pr保存预设效果和pr使用预设效果
- Java多线程游戏-雷霆战机
- 解决Proteus仿真时候提示Could not load simulator DLL错误
- Zabbix5.0监控CenterOS(RPM版)
- Android之调节屏幕亮度
- 【Kafka】Kafka为什么快?
- vue在创建项目时不小心选上代码校验选项(linter/ESlint)后,如何关掉?
- 2019河南省第十二届ACM大学生程序设计竞赛参赛感
- 算法系统下的外卖平台:饿了么可选多等5分钟,美团无差别8分钟
- 很干净的4句话,终生受用
- 数据加载、存储与文件格式(python)
- 洛谷10月月赛Round.1| P3400 仓鼠窝[单调栈]
- 题解 P2285 【[HNOI2004]打鼹鼠】
热门文章
- linux的搜索和时间
- PHP的SESSION使用,文件上传下载等
- 老生常谈–希望别再纠结了朋友
- Altiris™ IT Management Suite 7 Release Notes
- [转载]vs2008下安装boost
- 数据科学还是计算机科学_数据科学101
- 清洁数据ploy n_清洁屋数据
- c++运行不出结果_fastjson 不出网利用总结
- leetcode 1438. 绝对差不超过限制的最长连续子数组(滑动窗口+treemap)
- leetcode 888. 公平的糖果棒交换(set)