Python多任务执行方式

news/2024/10/17 22:18:25/

一、多任务的执行方式

  • 并发:在一段时间内交替去执行任务(单核CPU)
  • 并行:CPU核数大于任务数

二、进程(实现多任务)——操作系统调度

  • 进程是操作系统进行资源分配的基本单元
  • 一个程序至少有一个进程,一个进程默认有一个线程:线程是依附在进程内的
    在这里插入图片描述
  • 进程注意点
    • 进程之间不共享全局变量( 主进程:Windows需要添加main防止递归)
    • 主进程会等待所有的子进程结束再结束
  • 主进程退出子进程销毁
    • 让子进程设置成为守护主进程,主进程退出子进程销毁,子进程会很依赖主进程
      sub_process = multiprocess.Process(target=task)
      sub_process.daemon = True
      sub_process.start()
    • 让主进程退出之前先让子进程销毁
      sub_process.terminate()

三、线程(实现多任务)——cpu调度

  • 线程是cpu调度的基本单位,每个进程至少都有一个线程,即主线程
    在这里插入图片描述
    线程注意点:
  • 线程之间执行是无序的
  • 主线程会等待所有的子线程执行结束再结束
    在这里插入图片描述
  • 线程之间共享全局变量
    • 可能出现错误问题:全局变量问题、数据不同步
    • 解决方案:线程等待:join()、互斥锁、线程等待和互斥锁,都是改成单任务执行:保证数据准确性,但是执行性能下降
      在这里插入图片描述
  • 死锁:一直等待对方释放锁的情景
    在这里插入图片描述

四、 对比

  • 全局变量
    • 进程之间不共享
    • 线程共享,注意资源竞争(线程等待,互斥锁)
  • 创建进程的资源开销 > 线程
  • 进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位
  • 线程不能独立执行,必须存在进程中
  • 多进程开发比单进程多线程开发稳定性强

http://www.ppmy.cn/news/573020.html

相关文章

网关全局过滤器:Java中的强大工具

文章目录 网关过滤器简介网关过滤器的作用过滤器的生命周期实际应用示例权限过滤器解析 总结 网关过滤器简介 网关过滤器是一个位于应用程序和底层服务之间的组件,它截取进出网络请求,并提供对请求和响应进行处理的机制。它可以在请求到达目标服务之前或…

10种常用排序算法

10种常用排序算法 0——序言 以下是常用的排序算法及其对应的时间复杂度: 冒泡排序(Bubble Sort): 最好情况时间复杂度:O(n)平均情况时间复杂度:O(n^2)最坏情况时间复杂度:O(n^2) 选择排序&a…

c++11中的多线程std::thread

c11中的多线程std::thread 在c11中提供了新的多线程的创建方式std::thread, 丰富了对于多线程的使用。 std::thread类的构造函数的格式如下所示: thread() noexcept; //default constructor 其中noexcept表示函数不会抛出异常,如果抛出异常程序…

深入探究 ReentrantLock 的应用和原理

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

Ajax技术的秘密揭秘:异步传输,高效交互

文章目录 I. 什么是AjaxAjax的定义和起源Ajax与传统的Web应用程序之间的区别 II. Ajax的工作原理Ajax的基本原理Ajax如何通过异步传输实现无需刷新页面 III. Ajax的应用场景在Web应用程序中应用Ajax的优势Ajax在哪些场景中使用 IV. Ajax的组成部分和APIXHR对象FormData对象Fetc…

C# 中使用枚举转换时需要注意的坑点及解决方案

在使用枚举进行转换时,需要注意一些细节,否则可能会出现一些意外情况。本文将介绍一些在枚举转换中需要注意的坑点,并提供一些解决方案。 1、枚举从 int 值转换的坑 在将 int 值转换成枚举类型时,可能会遇到一些问题。即使 int …

nginx 前端及接口代理配置

以下为总结配置 我这一块配置为了习惯统一化 不管前端还是接口配置 location后面都带上斜杠。 前端代理配置 我比较常用的为alias方式 # 演示root和alias两种配置静态资源的区别server {listen 80;server_name localhost;# 用root方式,location中的路径会拼加到r…

给COS挂上nginx代理

目录 前言: 解决思路: Nginx代理配置 关键配置讲解: 附录 前言: 最近研发同学反馈本地无法连上线上测试的COS文件服务器。由于安全问题,研发同学连接公司内部服务都是通过自己的VPN;经过排查之后发现…