python threading类重写_python下threading模块使用的注意点

python下threading模块使用的注意点

1. 线程执行代码的封装

通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重写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) #name属性中保存的是当前线程的名字

print(msg)

if __name__ == '__main__':

t = MyThread()

t.start()

说明

python的threading.Thread类有一个run方法,用于定义线程的功能函数,可以在自己的线程类中覆盖该方法。而创建自己的线程实例后,通过Thread类的start方法,可以启动该线程,交给python虚拟机进行调度,当该线程获得执行的机会时,就会调用run方法执行线程。

2. 线程的执行顺序

#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

说明

从代码和执行结果我们可以看出,多线程程序的执行顺序是不确定的。当执行到sleep语句时,线程将被阻塞(Blocked),到sleep结束后,线程进入就绪(Runnable)状态,等待调度。而线程调度将自行选择一个线程执行。上面的代码中只能保证每个线程都运行完整个run函数,但是线程的启动顺序、run函数中每次循环的执行顺序都不能确定。

3. 总结

每个线程一定会有一个名字,尽管上面的例子中没有指定线程对象的name,但是python会自动为线程指定一个名字。

当线程的run()方法结束时该线程完成。

无法控制线程调度程序,但可以通过别的方式来影响线程调度的方式。

线程的几种状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html和css如何制作小球,[网页设计]使用CSS3动画模拟实现小球自由落体效果

[网页设计]使用CSS3动画模拟实现小球自由落体效果0 2015-07-20 14:00:03使用纯CSS代码模拟实现小球自由落体效果:html代码如下:1 2   CSS样式代码:/*ball样式*/#ballDiv{ height:400px; background-color:#333333;}#ball{ width:100px; hei…

arduino 土壤温湿度传感器_【雕爷学编程】Arduino动手做(70)---土壤湿度传感器...

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动…

python关闭对象语法_Python基础及语法(七)

文件操作文件常用操作open:打开read:读取write:写入close:关闭readline:行读取readlines:多行读取seek:文件指针操作tell:指针位置打开操作open(file, moder, buffering-1, encoding…

route和bridge是什么意思_port link-mode bridge是什么意思

展开全部工作在二层模式。bridge 英[brɪdʒ] 美[brɪdʒ]n 桥; 起联系作用的事物e68a8462616964757a686964616f31333433656131; 桥梁; 纽带; (舰船的) 驾驶台; 船…

怎么打开网络访问 计算机共享,电脑只要打开共享提示“无法启用共享访问”如何解决...

电脑升级到雨林木风win7系统后发现一个问题,那就是无法启用共享访问了,每次打开都会弹出提示“无法启用共享访问 错误Ox80004005:未指定的错误”,即使重装系统也没办法解决。后面检查后发现是关闭了“Windows firewall”服务进程造…

用户信息填写web代码_Web前端常见问题汇总

1.get 和post的区别1.1数据传输大小:get 传输数据大小限制在1KB,post传输数据大小没有严格限制1.2缓存和安全:get请求某个url,数据追加到url中发送(http的header传送),即浏览器将各个表单字段元…

页表长度和页表大小_在请求调页系统中,若逻辑地址中的页号超过页表控制寄存器中的页表长度,则会引起( ) 。_学小易找答案...

【单选题】根据法律规定,适龄儿童和青少年都必须接受,国家、社会、家庭必须予以保证的 国民 教育是 ( )【单选题】给定如下前提:(P∧Q)→R, R∨S, S 其逻辑结论(有效结论)是( )【判断题】This warranty does not become void under any circumstance during the warranty perio…

qq农场 html5,腾讯客服-QQ农场/牧场-QQ农场打不开该怎么解决?

QQ农场打不开该怎么解决?若在您的电脑网络环境没有问题的情况下,QQ农场无法打开,请您查看客服网站右上角的公告信息是否当天系统在升级维护中,若是系统升级维护中,可能会导致农场无法正常进入,界时请您更换…

python发展路线_Python进阶路径-从学徒到大师

慕盖茨9453107了解(更深入地)关于内存管理的Python数据类型及其作用正如社区中的一些人所知道的,我教授Python课程,其中最受欢迎的课程是综合性的Intro Intermediate课程以及介绍各种应用程序开发领域的“高级”课程。通常,我会被问到一个非…

php三级分销系统制作_微分销商城系统创建三级微商分销体系方法

微分销商城系统如何完善创建三级微商分销体系,微商城的建设成为现在商家的新选,如果成功经营,将会让商家获得大量收益。下面就让摩盒mohe详细说说。1、系统一键分销功能促使微商城提升销量分销商城系统的好坏,决定着微商城用户能否…

未来的科学计算机作文800字,未来的高科技学校作文800字

未来的高科技学校作文800字二十年以后,我们的学校也变成了高科技的学校。早晨我来到学校门口,发现学校没有大门。这是怎么回事?难道学校不怕有坏人吗?我心想。这时,我的身边突然出现了一个身上有许多按钮的机器人。它说…

jaccard相似度_如何计算两个字符串之间的文本相似度?

推荐阅读:面试BAT 却被小小字符串秒杀?这13道题帮你一举击败字符串算法题字节跳动秋招面经:后端开发工程师,已拿意向书前言平时的编码中,我们经常需要判断两个文本的相似性,不管是用来做文本纠错或者去重等…

ap接口 php_小白php API初体验 php api文档 php api接口开发 php web ap

这里的php 写API其实就是指提供一个WebServiceWebSite : 1.以html格式响应返回 2.由用户通过浏览器来接入WebService : 1.以json/Xml格式返回 2.由程序接入 3.用来实现不同平台的交互How to begin说简单点,就是传数据的,就是封装各种方法让其它人来调用A…

powerdesigner 导入html,使用PowerDesigner导出Word/HTML的一些配置

《JavaScript高级程序设计》学习笔记系统学习JS, 从入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...css link和@import区别用法这里link与import介绍的是html引入css的语法单词.两者均是引入css到html的…

java按钮陷下去_付费?广告?捐款?如何让开源软件活下去?

【CSDN编者按】作为一名使用开源软件的开发者,你是否曾思考过开源软件是如何盈利?如何运营下去的?本文作者从正反两面给出自己看到的案例和建议,思考让开源软件持续下去的方式,一起来看看吧。作者 | TJ VanToll译者 | …

clickhouse mysql引擎_ClickHouse为啥能做到变态快,超 MySQL 801倍?

原标题:ClickHouse为啥能做到变态快,超 MySQL 801倍?阿里、腾讯、字节跳动这种大厂每天数据规模达到千亿、万亿级别,中小企业手里要是没点儿数据,根本不好意思说自己是互联网公司。有数据是一回事,让数据发…

教资计算机科学与技术教资,教资笔试查成绩啦!广师大未来教师们又前进一步...

原标题:教资笔试查成绩啦!广师大未来教师们又前进一步这里是今日起考生登录ntce.neea.edu.cn“中小学教师资格考试网”即可查询笔试成绩啦惊不惊喜 意不意外查成绩的人这么多可以看出考取教师资格证已然成为大学生中的“香饽饽”日前,茂名滨海…

控制台启动jar包关闭控制台怎么关java程序_Jpom一款简而轻的低侵入式Java运维、监控软件...

你为什么需要JpomSpringBoot、Jboot等框架开发的项目通常是以Jar的方式在后台运行的,如果只有一两个项目,管理起来不是太麻烦,但是当项目多了以后,管理起来就不是那么方便了,当项目出现问题时,能够通过Jpom…

台式计算机如何双屏显示,电脑怎么分屏?|台式电脑双显示器连接方法

电脑怎么分屏?|台式电脑双显示器连接方法阅读:497时间:2019-08-10 23:24:36随着人们对时间效率的看中,比如在看报表的同时看电影,工作娱乐两不误,如果你也想要这样的工作环境,我们可以给电脑…

gossip 区块链_区块链中的P2P

区块链中P2P介绍p2p是什么为什么区块链需要P2P比特币、以太坊、超级账本和EOS的P2P对比P2P是什么P2P作为区块链网络中去中心化的标识P2P全称对等式网络(peer-to-peer),又称点对点技术,是无中心服务器、依靠用户群(peers)交换信息的互联网体系&#xff1b…