【代码学习】PYTHON 线程
一、使用threading模块多线程执行
- 可以明显看出使用了多线程并发的操作,花费时间要短很多
- 创建好的线程,需要调用
start()方法来启动
#coding=utf-8
import threading
import time
def test():
print("----TEST By SQYY----")
time.sleep(1)
if __name__ == "__main__":
for i in range(5):
t = threading.Thread(target=test)
t.start() #启动线程,即让线程开始执行
以上代码运行结果
----TEST By SQYY--------TEST By SQYY--------TEST By SQYY----
----TEST By SQYY--------TEST By SQYY----
二、使用Thread子类完成创建多线程
如果多个线程执行的都是同一个函数,各自之间不会有影响
主线程等待所有子进程结束之后才结束
#coding=utf-8
import threading
import time
class MyThread(threading.Thread):
def run(self)
for i in range(3):
time.sleep(1)
msg = "I'm" + self.name + '@' + str(i) #name属性中保存的是当前线程的名字
print(msg)
if __name__ =='__main__':
t = MyThread()
t.start()
以上代码运行结果:
I'm Thread-1 @0
I'm Thread-1 @1
I'm Thread-1 @2
三、线程的执行顺序
- 每个线程一定会有一个名字,尽管上面的例子中没有指定线程对象的name,但是python会自动为线程指定一个名字。
- 当线程的run()方法结束时该线程完成。
- 无法控制线程调度程序,但可以通过别的方式来影响线程调度的方式。
#coding=utf-8
import threading
import time class MyThread(threading.Thread):
def run(self):
for i in range(3):
time.sleep(1)
msg = "I'm "+self.name+' @ '+str(i)
print(msg)
def 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
四、多线程全局变量共享
from threading import Thread
import time #线程之间共享全局变量
g_num = 100 def work1():
global g_num
for i in range(3):
g_num += 1 print("----in work1, g_num is %d---"%g_num) def work2():
global g_num
print("----in work2, g_num is %d---"%g_num) print("---线程创建之前g_num is %d---"%g_num) t1 = Thread(target=work1)
t1.start() #延时一会,保证t1线程中的事情做完
time.sleep(1) t2 = Thread(target=work2)
t2.start()
以上代码运行结果:
---线程创建之前g_num is 100---
----in work1, g_num is 103---
----in work2, g_num is 103---
【代码学习】PYTHON 线程的更多相关文章
- ORB-SLAM2 论文&代码学习 —— LocalMapping 线程
转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12360913.html 本文要点: ORB-SLAM2 Local ...
- ORB-SLAM2 论文&代码学习 ——Tracking 线程
本文要点: ORB-SLAM2 Tracking 线程 论文内容介绍 ORB-SLAM2 Tracking 线程 代码结构介绍 写在前面 上一篇文章中我们已经对 ORB-SLAM2 系统有了一个概览性 ...
- Python学习——Python线程
一.线程创建 #方法一:将要执行的方法作为参数传给Thread的构造方法 import threading import time def show(arg): time.sleep(2) print ...
- ORB-SLAM2 论文&代码学习 —— LoopClosing 线程
转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12369339.html 本文要点: ORB-SLAM2 LoopC ...
- 通过代码学习python之@property,@staticmethod,@classmethod
URL: https://www.the5fire.com/python-property-staticmethod-classmethod.html #coding=utf-8 class MyCl ...
- python 线程创建和传参(28)
在以前的文章中虽然我们没有介绍过线程这个概念,但是实际上前面所有代码都是线程,只不过是单线程,代码由上而下依次执行或者进入main函数执行,这样的单线程也称为主线程. 有了单线程的话,什么又是多线程? ...
- ORB-SLAM2 论文&代码学习 —— 单目初始化
转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12358458.html 本文要点: ORB-SLAM2 单目初始化 ...
- python 线程 进程 协程 学习
转载自大神博客:http://www.cnblogs.com/aylin/p/5601969.html 仅供学习使用···· python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和 ...
- python自动化开发学习 进程, 线程, 协程
python自动化开发学习 进程, 线程, 协程 前言 在过去单核CPU也可以执行多任务,操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换任务2,任务2执行0.01秒,在切换到任务3,这 ...
- 编写高质量代码改善python程序91个建议学习01
编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...
随机推荐
- IIS学习笔记
IIS传输笔记 1.作用 IIS 将网站开发代码传输到服务器上,就是为了网站的发布 2.下载安装 我是使用的云服务器,windows sever 2012 2.1打开"服务器管理器" ...
- AcWing 1022. 宠物小精灵之收服 二维费用背包
#include<iostream> using namespace std ; ; int f[N][N]; int V1,V2,n; int main() { cin>>V ...
- TODO:如何模拟cpu打满,磁盘打满,网卡打满
背景: 测试活动中,需要构造cpu打满.磁盘打满.网卡打满的场景 场景1:cpu打满 环境信息: 虚拟机,物理核数16个,每个物理核的虚拟核数1个,虚拟核数16个: [root@vm10-0-0-8 ...
- codeblocks汉化
1.- 汉化包 腾讯微云 2.首先打开codeblocks安装文件夹,如:D:\CodeBlocks\share\CodeBlocks\locale\zh_CN,注意:zh_CN文件夹需自行创建 3. ...
- jquery easyui combogrid Uncaught TypeError:Cannot read property
================================ ©Copyright 蕃薯耀 2020-01-07 https://www.cnblogs.com/fanshuyao/ 一.问题描述 ...
- MySql -- default 默认约束
常用数据库约束: 一.default 默认约束: 二.not null:非空约束,指定某列不为NULL: 三.unique:唯一约束,指定某列和几列组合的数据不能重复: 四.primary key:主 ...
- 部署项目到jetty
一.打包项目 1.在pom.xml中添加以下依赖 <dependency> <groupId>org.mortbay.jetty</groupId> <art ...
- MYSQL之路练习题
题目换成求平均薪水的等级最高的部门的部门名称
- Apache Kafka(九)- Kafka Consumer 消费行为
1. Poll Messages 在Kafka Consumer 中消费messages时,使用的是poll模型,也就是主动去Kafka端取数据.其他消息管道也有的是push模型,也就是服务端向con ...
- eclipse快速创建一个Spring Boot应用
1,创建一个空的maven项目 2,添加parent <parent> <groupId>org.springframework.boot</groupId> &l ...