Python中Thread多线程的创建与使用_create a new thread in python-程序员宅基地

技术标签: python  

线程(Thread)特点:

  1. 线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位
  2. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
  3. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
  4. 拥有自己独立的栈和共享的堆,共享堆,不共享栈,标准线程由操作系统调度;
  5. 调度和切换:线程上下文切换比进程上下文切换要快得多。

线程的创建方式

Python的标准库提供了两个模块:_threadthreading_thread是低级模块,threading是高级模块,对_thread进行了封装。绝大多数情况下,我们只需要使用threading这个高级模块。

线程的创建可以通过分为两种方式:

1. 方法包装

2. 类包装

线程的执行统一通过start()方法

线程的创建方式(方法包装)

#方法方式创建线程
from threading import Thread
from time import sleep
def func1(name):
    for i in range(3):
        print(f"thread:{name} :{i}")
        sleep(1)
​
if __name__ == '__main__':
    print("主线程,start")
    #创建线程
    t1 = Thread(target=func1,args=("t1",))
    t2 = Thread(target=func1,args=("t2",))
    #启动线程
    t1.start()
    t2.start()
    print("主线程,end")

 线程的创建方式(类包装)

#类的方式创建线程
from threading import Thread
from time import sleep
​
class MyThread(Thread):
    def __init__(self,name):
        Thread.__init__(self)
        self.name =name
    def run(self):
        for i in range(3):
            print(f"thread:{self.name} :{i}")
            sleep(1)
​
if __name__ == '__main__':
    print("主线程,start")
    #创建线程(类的方式)
    t1 = MyThread('t1')
    t2 = MyThread('t2')
    #启动线程
    t1.start()
    t2.start()
    print("主线程,end")

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_64336780/article/details/123882167

智能推荐

手把手教你安装Jupyter Notebook(保姆级教程)_jupyter notebook安装教程-程序员宅基地

文章浏览阅读10w+次,点赞323次,收藏1.8k次。Jupyter Notebook安装教程_jupyter notebook安装教程

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_笔记本摄像头识别动作-程序员宅基地

文章浏览阅读7.5k次,点赞15次,收藏78次。“你比个手势,AI就识别出Emoji,浏览器上跑:已开源,推特2.8万赞”本文运行了尼克小哥的开源代码,其中有那么一点点坑吧。zxx让我把这个跑一下,跑是跑成了,但他没用上。尼克用的是TensorFlow.js,用IBM云上的GPU训练的,免费的k80,半小时训练时间,在IBM的annotations上准备数据标注手势图。作者写的教程,其实真的蛮手把手的,就是细心一点就好了。当然,我跑出来..._笔记本摄像头识别动作

磁芯存储器简介------顺便说说core dump的core是什么含义_磁芯存储器的理论-程序员宅基地

文章浏览阅读1k次。在前面的文章中, 我们说了存储器, 无非就是厕所的坑, 标志一个二值状态。 如果你愿意, 那么你可以用厕所的坑的组合来设计一个存储器, 照样可以存储你从岛国下载回来的电影, 只是, 需要太多这样的厕所坑, 不划算, 你我都没有那么多钱。既然用厕所的一个坑来做一个二进制bit位很浪费钱, 那我们来说说磁芯存储器, 看一张图:这就是磁芯存储器, 里面有64个..._磁芯存储器的理论

前端性能优化 面试题总汇_前端项目优化面试题-程序员宅基地

文章浏览阅读5k次,点赞46次,收藏144次。Ⅰ、如何优化请求图片方面① 精灵图② 小图标 Base64③ 图片懒加载④ 图标库 采用 svg请求内容方面① 减少请求内容大小②更改请求方式③ 防抖节流④ 利用存储Ⅱ、代码优化① 事件委托② 减少dom操作③ 页面结构优化④ css 优化Ⅲ、框架和打包① SSR 服务端渲染② CDN 加速③ tree-shaking (摇树优化)④ js 最小拆包⑤ 路由懒加载⑥ 异步组件,异步Js_前端项目优化面试题

初学HTML5——画布(canvas)_html canvas里加标题-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏11次。一.canvas介绍canvas为画布, 使用canvas便可以轻松的在网页上绘制图形,文字,图片等。二.画布的使用1.创建画布:HTML5中提供了<canvas>标签,使用<canvas>标签可以在网页中创建一个矩形区域的画布:<canvas id="cavsElem" width=“400” height="300">你的浏览器不支持canva..._html canvas里加标题

牛客网剑指Offer_66道python(更新中)_牛客网剑指offer 66题 python-程序员宅基地

文章浏览阅读1k次。牛客网剑指Offer_编程题导语1 Fibonacci数列及其应用(考察:递归与循环)2 数组3 查找与排序4功能快捷键5合理的创建标题,有助于目录的生成6如何改变文本的样式7插入链接与图片8如何插入一段漂亮的代码片9生成一个适合你的列表10创建一个表格11设定内容居中、居左、居右12SmartyPants13创建一个自定义列表14如何创建一个注脚15注释也是必不可少的16KaTeX数学公式..._牛客网剑指offer 66题 python

随便推点

flutter 环境搭建_flutter环境搭建-程序员宅基地

文章浏览阅读9.6k次,点赞4次,收藏54次。Flutter 是谷歌开发的一款开源、免费的,基于 Dart 语言的U1框架,可以快速在i0S和Android上构建高质量的原生应用。它最大的特点就是跨平台和高性能。Dart是由谷歌,在2011 年开发的计算机编程语言,它可以被用于Web、服务器、移动应用和物联网等多个领域。号称要取代JavaScript._flutter环境搭建

MySQL 大表优化方案-程序员宅基地

文章浏览阅读92次。点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2020超神之路,很肝~中文详细注释的开源项目...

android 9.0 开机动画,Android bootanim开机动画启动流程-程序员宅基地

文章浏览阅读870次。1. system进程在启动过程中会调用SurfaceFlinger类的静态成员函数instantiate来启动SurfaceFlinger服务。启动过程中,首先创建一个SurfaceFlinger实例,此实例会被一个SP 指针引用。当一个对象被一个智能指针第一次引用的时候,该类的onFirstRef方法将被调用:void SurfaceFlinger::onFirstRef(){mEventQu..._android bootnim

[转]quick-cocos2d-x 从2.2.5升级到3.3的体会-程序员宅基地

文章浏览阅读431次。原文地址:https://my.oschina.net/ffs/blog/390275从quick 2.2.5升级到quick 3.3 final版本,我发现改动还是很大的,但是github上的文档只涵盖了很少的一部分,因此我在这里把自己升级中的一些注意事项罗列出来,希望能有所帮助。 首先,我们可以看看github上的文档,主要有如下部分: 下列函

Java-接口和多态_error: constructor pingpangplayer in class pingpan-程序员宅基地

文章浏览阅读149次。接口接口Interface,接口和类的关系是实现,implementsInterface 接口名{}package com.it01;/* * java用于处理继承的单一局限性---接口Interface,接口和类的关系是实现,implements * * 创建接口的格式 * Interface 接口名{ * } */public class Inte..._error: constructor pingpangplayer in class pingpangplayer cannot be applied

Kotlin-简约之美-进阶篇(二):when的使用详解_kotlin duplicate label in when-程序员宅基地

文章浏览阅读1.4k次。提到 when,大家都会联想到 Java 中的 switch,然而在 kotlin 中,when 显然比 Java 中的 switch 要强大得多。首先,我们先来看看 when 的特点:它可以作为表达式使用使用更加安全强大灵活的分支结构可以不带参数接下来,我来带大家逐步领略这些特点。以下面这段 Java 功能代码为例:switch(animal) { case EAGLE:..._kotlin duplicate label in when

推荐文章

热门文章

相关标签