Python-操作系统进程概念
Posted we我们
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-操作系统进程概念相关的知识,希望对你有一定的参考价值。
第一次提出了多个程序可以同时在计算机中计算
-
1.遇到IO就让出cpu
-
2.把cpu让给其他程序,让其他程序能够使用cpu
-
3.cpu的让出这件事要占用时间
-
4.两个程序来回在cpu上切换,不会乱
-
每个程序有独立的内存空间
-
每个程序在切换的前后会把当前的状态记录下来
-
cpu计算和不计算(IO)的操作
IO操作不占cpu
IO操作(网络操作 文件操作):输入输出(相对内存)
-
阻塞:sleep/input/recv/accept/recvfrom/是不需要cpu参与的
-
对文件的读取:对硬盘的操作一次读取相对与90w条代码
input:向内存输入数据(从硬盘)
read/load/input/recv/recvfrom/accept/connect/close
output:从内存输出数据
write/dump/print/send/sendto/accept/connect/close
所有的IO操作本质都是文件操作
input/print
input是写入文件,然后通过读取文件把输入的内容加载到内存
print是直接写入文件,然后通过文件展示给用户看
socket中的交互方法:都是文件操作
send是向缓存文件中写
recv是从缓存文件中读
也就是说只要涉及到IO操作 至少就是一个0.009s = 就是cpu执行90w条python代码的时间
cpu只计算读取到内存中的数据,其他没有读取到内存的不会计算
时间片轮转算法 -- 分时操作系统
-
1.时间片到了才让出cpu
-
2.cpu的让出这件事 占用时间
-
3.降低工作效率,提供用户体验
单核 1cpu 只能跑一个程序
进程的概念
程序与进程(计算机最小的资源分配单位)
运行中的程序就是进程
进程与进程之间的数据是隔离的
线程(计算机中能被操作系统调度的最小单位)
每个程序执行到哪个位置是被记录下来的
在进程中 有一条线程是负责具体的执行程序的
进程是被操作系统管理的
进程的调度(操作系统完成的):
被操作系统调度的,每个进程中至少有一个线程
短作业优先算法
先来先服务算法
时间片轮转算法
多级反馈算法
进程的启动 销毁
进程的启动:1.交互(双击) 2.在一个进程中启动另一个 3.开机自动启动
负责启动一个进程的程序 被称为一个父进程
被启动的进程 就是一个子进程
销毁:交互 被其他进程杀死(在父进程结束子进程) 出错进程结束
父子进程
父进程开启子进程
父进程还要负责对结束的子进程进行资源的回收
进程id processid pid
在同一台机器上 同一时刻 不可能有两个重复的进程id
进程id不能设置 是操作系统随机分配的
进程id随着多次运行一个程序可能会被多次分配 每一次都不一样
进程的三状态图
就绪ready 运行run 阻塞block
import os
import time
print(os.getpid())
print(os.getppid()) # parent process id
time.sleep(100)
模块mutilprocessing模块:内置模块
multiple 多元化
processing 进程
import os
import time
from multiprocessing import Process
def func():
"""
在进程中执行的func
:return:
"""
print(\'子进程:\',os.getpid(),os.getppid())
time.sleep(3)
if __name__ == \'main\':
p = Process(target=func)
p.start()
print(\'主进程:\',os.getpid())
给子进程传参
def foo(a):
"""
在进程中执行的foo
:return:
"""
print(\'子进程:\', a)
time.sleep(3)
if __name__ == \'__main__\':
p = Process(target=func, args=(1,))
p.start()
并行:多个程序 同时被cpu执行
并发:多个程序看起来在同时运行
同步:一个程序执行完了再调用另一个 并且在调用的过程中还要等待这个程序 执行完毕
异步:一个程序执行完了在调用另一个 但是不等待这个任务完毕 就继续执行
阻塞:cpu不工作
以上是关于Python-操作系统进程概念的主要内容,如果未能解决你的问题,请参考以下文章