首页 > 系统相关 >python,进程线程

python,进程线程

时间:2022-11-29 14:44:06浏览次数:36  
标签:python 程序 对象 线程 进程 共享 方法

一、 什么是进程 / 线程

https://blog.csdn.net/qq_69447411/article/details/126313426

1、 引论

众所周知,CPU是计算机的核心,它承担了所有的计算任务。而操作系统是计算机的管理者,是一个大管家,它负责任务的调度,资源的分配和管理,统领整个计算机硬件。应用程序是具有某种功能的程序,程序运行与操作系统之上

2、 线程
在很早的时候计算机并没有线程这个概念,但是随着时代的发展,只用进程来处理程序出现很多的不足。如当一个进程堵塞时,整个程序会停止在堵塞处,并且如果频繁的切换进程,会浪费系统资源。所以线程出现了

线程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位。一个进程可以拥有多个线程,而且属于同一个进程的多个线程间会共享该进行的资源

3、 进程
进程时一个具有一定功能的程序在一个数据集上的一次动态执行过程。进程由程序,数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时需要的数据和工作区;程序控制块(PCB)包含程序的描述信息和控制信息,是进程存在的唯一标志

4、 区别
一个进程由一个或者多个线程组成,线程是一个进程中代码的不同执行路线
切换进程需要的资源比切换线程的要多的多
进程之间相互独立,而同一个进程下的线程共享程序的内存空间(如代码段,数据集,堆栈等)。某进程内的线程在其他进程不可见。换言之,线程共享同一片内存空间,而进程各有独立的内存空间

4、 线程间数据的共享
现在我们程序代码中,有多个线程, 并且在这个几个线程中都会去 操作同一部分内容,那么如何实现这些数据的共享呢?

这时,可以使用 threading库里面的锁对象 Lock 去保护

Lock 对象的acquire方法 是申请锁

每个线程在操作共享数据对象之前,都应该申请获取操作权,也就是调用该共享数据对象对应的锁对象的acquire方法,如果线程A 执行了 acquire()方法,别的线程B 已经申请到了这个锁, 并且还没有释放,那么 线程A的代码就在此处 等待 线程B 释放锁,不去执行后面的代码。

直到线程B 执行了锁的 release 方法释放了这个锁, 线程A 才可以获取这个锁,就可以执行下面的代码了

三、 多进程使用
1、 简介
Python中的多进程是通过multiprocessing包来实现的,和多线程的threading.Thread差不多,它可以利用multiprocessing.Process对象来创建一个进程对象。这个进程对象的方法和线程对象的方法差不多也有start(), run(), join()等方法,其中有一个方法不同Thread线程对象中的守护线程方法是setDeamon,而Process进程对象的守护进程是通过设置daemon属性来完成的

3.2 Manager 方法

Manager的作用是提供多进程共享的全局变量,Manager()方法会返回一个对象,该对象控制着一个服务进程,该进程中保存的对象运行其他进程使用代理进行操作

标签:python,程序,对象,线程,进程,共享,方法
From: https://www.cnblogs.com/sunyiguang/p/16935178.html

相关文章

  • nmon+python 基于AIX系统数据分析
    ​​https://sourceforge.net/projects/pynmongraph/​​ github:​​https://github.com/madmaze/pyNmonAnalyzer​​  nmon sourceforge:​​https://sourceforge.......
  • Python 使用json存储数据
    一、前言很多程序都要求用户输入某种信息,如让用户存储游戏首选项或提供要可视化的数据。不管专注的是什么,程序都把用户提供的信息存储在列表和字典等数据结构中。用户关闭......
  • python 学习记录(5)-变量、模块名的命名规则及random模块使用
    学习:Python开发技术祥解源文件\02\2.2\2.2.1#!/usr/bin/python#-*-coding:UTF-8-*-#变量、模块名的命名规则#Filename:ruleModule.py_rule="ruleinformation......
  • Python——批量将PDF文件转为图片
    前言这里是只将pdf文件的前两页进行了转换;内容importfitz#pipinstallpymupdfimportosdefpdf2img(pdf_path,zoom_x,zoom_y):doc=fitz.open(pdf_pa......
  • 多线程-龟兔赛跑案例
    案例:龟兔赛跑首先来个赛道距离,然后要离终点越来越近判断比赛是否结束打印出胜利者龟兔赛跑开始故事中是乌龟赢得,兔子需要睡觉,所以我们模拟兔子睡觉终于,乌龟赢得比赛......
  • python爬虫是什么?爬虫可以分为哪几类?
    众所周知,Python是一门脚本语言,也被称为胶水语言,其应用领域也是十分广泛的,哪怕你不想从事IT行业,学习Python语言也是百利而无一害的,今天给大家详细介绍下Python网络爬虫究......
  • Python异步协程(asyncio详解)
    续上篇讲解yieldfrom博客,上篇链接:https://www.cnblogs.com/Red-Sun/p/16889182.htmlPS:本博客是个人笔记分享,不需要扫码加群或必须关注什么的(如果外站需要加群或关注的可......
  • 拥抱云原生,Java与Python基于gRPC通信
    ......
  • PYTHON 运算符
    1.1运算符运算符也称操作符,主要有算术,关系,逻辑,位等。1.2算术运算符用于整数,浮点数的计算。运算符描述实例+加-两个对象相加a+b-减-得到负数或......
  • 【异步与线程池】串讲&优化详情页加载
    ......