计算机基础知识33

news2025/1/18 4:43:39

进程基础(操作系统中的概念)

进程它是操作系统总最重要的概念,线程也是

进程和线程都是有操作系统来调度使用的,我们程序员是不能控制的

# 进程和程序是两码事、完全不一样

      程序:其实一个死的东西、一堆代码就是程序,它也没有生命周期

      进程:它是有生命周期的,这个任务做完,进程就不存在了

              # 程序就是流程. 做菜的过程就是进程

                 厨师就是线程,谁干活谁就是线程,做菜完,进程就不存在了

# 一个进程中至少要有一个线程,可以有多个线程

协程就是程序员级别的,协程的调度它就是有我们程序员自己来调度的

          进程 >>> 线程  >>> 协程

          他们三个消耗资源的对比:进程 >>> 线程 >>> 协程

# 单个CPU一次只能运行一个任务,打开浏览器的过程就是进程

进程调度算法(四种算法)

# CPU的工作机制:

         1. 遇到I/O的时候,CPU会交出执行权限
         2. 当CPU遇到耗时比较长的时候,也会自动交出执行权限,切换到其他任务

#  I/O密集型:会被时间所阻塞,不会占用大量的CPU资源,比如sleep(3)

   计算密集型:没有时间的大量消耗,不占用大量的时候,会占用大量的CPU资源

for i in range(10000000):
      i+=1

一、先来先服务调度算法
二、短作业优先调度算法
三、时间片轮转法(选时间合适的)
四、多级反馈队列

进程的并行和并发概念

并行:统一时刻同时运行

并发:一段时间内看起来是同时运行

          CPU是单核时,同一时刻能不能做到同时执行多个任务,看上去是,来回切换

          CPU4核,执行2个任务,派哪两个核是由操作系统做

"""面试题:你对高并发有什么见解? 聊聊高并发? 你如何解决?"""

同步异步阻塞和非阻塞

# 老师:

       同步:每一次的运行都要依赖于上一步的结果       # 电话不挂,查到告诉
       异步:每次的运行结果不依赖于上次的结果          #  先挂,查到后再打电话告诉

# 我:

        阻塞: # 电话不挂,一直等老师消息
       非阻塞:  # 先干自己的事,没有再打电话给老师询问消息

异步+非阻塞 # 是效率最高的
                    同步+阻塞   # 是效率最低的 

如何开启进程

from multiprocessing import Process

def task():
    with open('a.txt', 'w', encoding='utf-8') as f:
        f.write('helloworld')

if __name__ == '__main__':
    p = Process(target=task)  #   实例出来一个进程类, 让这个进程执行task任务
    p.start()    # 真正的开启进程

# 开启一个进程来执行task任务,真正执行的是线程,进程里面至少有一个线程

# 操作系统开启进程

Process类的参数

进程的几个属性:1、进程名   2、进程号pid   kill

# 查看就进程名称      print( p.name)

# 改进程名字

p.name = '这是新的进程名'
print(p.name)  # 这是新的进程名

# 传参

from multiprocessing import Process
import time

def task(name, age, gender):
    time.sleep(3)
    print("子进程的代码")

if __name__ == '__main__':
    # 只是通知操作系统去开进程,有一定时间,开启进程其实消耗很大
    p = Process(target=task, name='process-2')   # 子进程
    p.start()  # 启动进程

# 查看进程号:print(p.pid) # process id

task任务里都是子进程,其余是主进程

           p.start()  # 真正的开启进程

           p.terminate() # 杀死进程,结束任务

           print(p.is_alive())   # True 看进程是否还在

           p.join() # 等待子进程的代码全部执行完毕,在走主进程的

单进程

如何开启多进程

多进程就意味着可以同时做多个任务

from multiprocessing import Process
import time

def task(name):
    with open('a.txt', 'a', encoding='utf-8') as f:
         f.write('helloworld')

if __name__ == '__main__':
    for i in range(5):     # 执行5次
        p=Process(target=task, kwargs={'name':'kevin'})
        p.start()    

# 理论上可以一直开进程,但是需要考虑资源的消耗情况

       # 先执行主进程,再执行子进程

多进程中,想先执行子进程再主进程,p.join(),不能加在for循环中,不然是5秒

from multiprocessing import Process
import time

def task(name):
    print("子进程")
    time.sleep(1)

if __name__ == '__main__':
    start_time = time.time()
    ll = []
    for i in range(10):
        p=Process(target=task, kwargs={'name':'kevin'})
        p.start()
        ll.append(p)

    for j in ll:        # 小的高并发情况,双11同时涌进大量客户
        j.join()
    print("主进程, 总时间:", time.time() - start_time)

基于TCP协议的高并发程序

一个服务端不能够同时给多个客户端发送消息

import socket  # python提供的socket模块

def task(conn):
    while True:
        try:
            data = conn.recv(1024)  # 括号里面写的是接收的字节数,最多接收1024个字节
            if len(data) == 0:
                continue
            print(data)  # 还是bytes类型
            conn.send(data.upper())    # 服务端开始给客户端也发送一个数据
        except Exception as e:
            print(e)
            break
    conn.close()


from multiprocessing import Process

if __name__ == '__main__':
    server = socket.socket()  # 默认是TCP协议
    server.bind(('127.0.0.1', 8001))  # 服务端绑定一个地址
    server.listen(1)  # 监听,半连接池
    print('服务端正在准备接收客户端消息:')
    while True:
        conn, client_addr = server.accept()  # 接收,  程序启动之后,会在accept这里夯住,阻塞
        p = Process(target=task, args=(conn,))
        p.start()

今日思维导图: 

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

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

相关文章

【5】c++11新特性(稳定性和兼容性)—>override关键字

override关键字很简单,就是起到一个检查的作用,父类中有一个虚函数,子类要去重写这个虚函数,那么在子类重写时,函数后面加上override,就会检查子类中重写的这个函数和父类中这个虚函数名是否一样&#xff0…

FISCO过程中存在的的问题

问题1:端口被占 报错:Exceed waiting time. Please try again to start node0 initConfig for P2PInitializer failed,check Port30303,EINFOThrow location unknown (consider using BOOST_THROW_EXCEPTION) Dynamic exception type: boost::exception_…

80026-044-06-R 数字伺服驱动器提供了更好的配置和性能

80026-044-06-R 数字伺服驱动器提供了更好的配置和性能 由于它们的精密性能,伺服驱动器被用于机器人,自动化,数控加工,甚至在过程中制造半导体. 一些运动控制应用使用模拟伺服驱动器,这是一项久经考验的技术。虽然它…

数据结构之顺序表的模拟实现

💕"世事犹如书籍,一页页被翻过去。人要向前看,少翻历史旧账。"💕 作者:Mylvzi 文章主要内容:数据结构之顺序表的模拟实现 /*** Created with IntelliJ IDEA.* Description:* User: 绿字* Date:…

【EI会议征稿通知】第四届电网系统与绿色能源国际学术会议(PGSGE 2024)

JPCS独立出版-第四届电网系统与绿色能源国际学术会议(PGSGE 2024) 2024 4th International Conference on Power Grid Systems and Green Energy 2024年第四届电网系统与绿色能源国际学术会议(PGSGE 2024) 将于2024年01月05-07日在中国厦门召开。本次会…

【计算机网络】第一章——概述

个人主页直达:小白不是程序媛 系列专栏:计算机网络基础 目录 前言 计算机网络概述 概念 功能 组成 分类 标准化工作 性能指标 速率 带宽 吞吐量 时延 时延带宽积 往返时延RTT 利用率 分层 为什么要分层? 分层的基本原则&am…

【Java实战】创建第一个Springboot项目Hello world

没有旗舰版的Idea授权,所以安装了社区版的idea。不知道从何时开始,社区版IDEA的插件不好用了,所以就换了个方法生成Springboot项目。 一 在线生成 选择好对应的选项后,点击生成就可以下载到一个完整的springboot项目了。 二 使用…

倍福tnzip,tszip,tpzip文件的打开方式

文章目录 一. tnzip的打开方式二. tszip打开方法三. tpzip打开方法 一. tnzip的打开方式 打开项目:选择菜单栏 FILE,点击 Open Solution from Archive…,在弹出的 对话框中选择保存好的文件,单击打开。选择展开此项目的路径&…

处理sass-loader安装失败

Vue项目中安装node-sass跟sass-loader 我们在开发中,经常会使用sass语法来编写css,在安装node-sass和sass-loader时,经常会出现错误(通常是依赖冲突)导致安装失败。因为官方发布的版本号并不是连续的,有些版本与版本之…

【RocketMQ系列六】RocketMQ事务消息

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

海洋CMS仿爱美剧影视电影视频网站模版源码/自适应手机端

海洋CMS仿爱美剧网站模板,自适应手机端,内含视频、资讯、留言模块。 下载地址:https://bbs.csdn.net/topics/617419787

wps/word 之 word中的两个表格 如何合并成为一个表格(已解决)

第一步:新建两个表格: 如何实现上面的两个表格合并呢? 分别选定每个表格,然后鼠标右键---》表格属性 在表格属性中的 表格---》选择 无文字环绕。 第二个表格按照同样的方法 设置 无文字环绕。 然后将中的文本行删去即可以了。选…

金融液冷数据中心,噱头还是趋势?

当前,全社会数字化进程加速,金融行业已全面进入数字化和智能化时代。与此同时,随着云计算、分布式架构、大数据分析、通用人工智能等技术的广泛运用,金融行业从数据大集中到分布式融合,金融企业的数据中心建设正围绕其…

什么是MIMO?

什么是MIMO?从SISO到MIMO - 华为 (huawei.com) MIMO(Multiple-Input Multiple-Output)是指在无线通信领域使用多天线发送和接收信号的技术。MIMO技术主要应用在Wi-Fi(WiFi)领域和移动通信领域,可以有效提高…

Unity之ShaderGraph如何实现光边溶解

前言 今天我们来实现一个最常见的随机溶剂效果。如下图所示: 光边溶解效果: 无光边效果 主要节点 Simple Noise:根据输入UV生成简单噪声或Value噪声。生成的噪声的大小由输入Scale控制。 Step:对于每个组件,如果输…

软件招标测试包含哪些测试?对软件项目起到什么作用?

在当前日益竞争激烈的软件市场中,一款优质的软件产品是企业获得竞争优势的关键。而软件招标测试正是评估软件质量的重要环节。   那么,什么是软件招标测试呢?简单来说,软件招标测试主要是验证软件产品的关键指标是否符合投标书要求。它通过…

多维时序 | MATLAB实现SSA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)

多维时序 | MATLAB实现SSA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制) 目录 多维时序 | MATLAB实现SSA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)预测效果基本描述模型描述程序设计参考资料 预测效果 基本描述…

中国移动集采120万部,助推国产5G赶超iPhone15

近期媒体纷纷传出消息指中国移动将大规模集采,预计将采购国产5G手机120万台,加上另外两家运营商的集采数量,估计集采数量可能达到300万部,如此将有助于它在国内高端手机市场赶超苹果。 国产5G手机在8月底突然上市,获益…

libportaudio.so.2: cannot open shared object file: No such file or directory

ubuntu安装完pyaudio后报错 ImportError libportaudio.so.2: cannot open shared object file: No such file or directory解决方案 sudo apt-get install libportaudio2 libportaudiocpp0 portaudio19-dev

图片处理AIGC人工智能

以下是人工智能用文字生成的图片 文字:一个好看的亚洲美女站在桥上,周围是开满荷花的池塘 文字:一个好看的亚洲美女站在99道弯的天路上 文字:一个好看的亚洲美女骑在骆驼上 文字:一个好看的亚洲美女站在金字塔前 文字…