当前位置: 首页 > article >正文

python中Thread实现多线程任务

目录

多线程概括:

使用 Thread 模块创建线程

如果不使用多线程:


多线程概括:

多线程是一种并发执行的编程方式,允许程序同时执行多个独立的线程,每个线程在程序中运行独立的任务。每个线程都是程序的基本执行单元,拥有自己的执行序列、局部变量和执行上下文。

在多线程编程中,多个线程可以同时执行,而不是按照严格的顺序进行。这使得程序能够更有效地利用多核处理器,提高整体性能。多线程通常用于执行并行计算、提高响应性以及处理异步任务。

每个线程在执行时都可以独立执行不同的代码段,但它们共享进程的资源,如内存空间和文件句柄。因此,需要谨慎处理多线程之间的数据共享和同步问题,以避免竞态条件和数据一致性问题。多线程编程可以通过操作系统的线程调度器或编程语言提供的线程库来实现。

使用 Thread 模块创建线程

Python 的 threading 模块提供了创建和管理线程的工具。通过导入 threading 模块,你可以使用 Thread 类创建新线程,例如:

from threading import Thread
from time import sleep, ctime

class MyClass(object):
    def func(self,name,sec):
        print(name,':开始',  '时间:', ctime())
        sleep(sec)
        print(name,':结束',  '时间:', ctime())

def main():
    # 创建 Thread 实例
    t1 = Thread(target=MyClass().func, args=(1, 1))
    t2 = Thread(target=MyClass().func, args=(2, 2))
    # 启动线程运行
    t1.start()
    t2.start()
    # 等待所有线程执行完毕
    t1.join()  # join() 等待线程终止,要不然一直挂起
    t2.join()

if __name__=="__main__":
    main()

这表明两个线程是同时执行的,线程 1 在休眠 1 秒后结束,线程 2 在休眠 2 秒后结束。多线程的优势在于能够并行执行任务,提高程序的执行效率。在这个例子中,由于 sleep 模拟了耗时的任务,所以两个线程可以在几乎同时开始,但由于休眠不同的时间,它们的结束时间有所不同。 

如果不使用多线程:

from time import sleep, ctime

def func(name,sec):
        print(name,':开始',  '时间:', ctime())
        sleep(sec)
        print(name,':结束',  '时间:', ctime())

if __name__=="__main__":
    func(1,1)
    func(2,2)

可以看到程序1结束之后才执行程序2的,所有多线程可以并发执行,减少程序所用时间

 

 


http://www.kler.cn/a/134395.html

相关文章:

  • qt QVideoWidget详解
  • [CKS] 关闭API凭据自动挂载
  • 10款PDF翻译工具的探索之旅:我的使用经历与工具特色!!
  • 力扣 LeetCode 142. 环形链表II(Day2:链表)
  • C 语言标准库 - <errno.h>
  • 【SpringBoot】18 上传文件到数据库(Thymeleaf + MySQL)
  • iTerm2+oh-my-zsh搭个Mac电脑上好用好看终端
  • Zotero在word中插入参考文献
  • 队列和微服务的异步通信
  • Python选择排序和冒泡排序算法
  • linux基础:4:gdb的使用
  • 保姆级 | Nginx编译安装
  • golang学习笔记——条件表达式
  • 【Dubbo】Dubbo负载均衡实现解析
  • nodejs微信小程序-实验室上机管理系统的设计与实现-安卓-python-PHP-计算机毕业设计
  • 2023数维杯国际赛数学建模竞赛选题建议及B题思路讲解
  • Linux本地docker一键部署traefik+内网穿透工具实现远程访问Web UI管理界面
  • OpenAI 地震!首席执行官被解雇,背后的原因是?
  • linux 定时执行脚本
  • 【Flink】系统架构
  • 力扣372周赛
  • 微机原理练习题_13
  • 计算机网络——物理层-信道的极限容量(奈奎斯特公式、香农公式)
  • ElasticSearch快速入门
  • 【论文阅读】VideoComposer: Compositional Video Synthesis with Motion Controllability
  • 2023/11/15JAVA学习(线程池,Executors,网络编程,InetAddress,UDP,TCP,DatagramSocket)