27、进程基础

一、进程基础

狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。

广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元

1、进程和线程的区别

进程是资源分配的最小单位,线程是cpu执行的最小单位

一个程序运行,最少有一个进程
一个进程里最少有一条线程

2、进程和程序的区分

程序可以作为一种软件资料长期存在,是永久的。
而进程是有一定生命期的,是暂时的。

3、进程的状态

就绪态:可以被cpu调度执行了,但还没有执行,在排着队
运行态:在cpu中运行,正在运行(如果到了时间片,也会被调度出去,调度出去的程序是就绪态)
阻塞态:io操作,把数据加载到内存中

二、并发和并行

并发:你在跑步,鞋带开了,停下跑步,系鞋带,系完以后,继续跑步。

在一个时间段内来看,你干了多个事 -----单核下的并发

并行:你在跑步,你用随身听在听着.

同一时刻,在干多个事 -----只有多核才涉及到并行

三、同步异步,阻塞非阻塞

1 同步调用:提交了以后,一直等待结果返回
2 异步调用:提交了以后,返回一个标志,等执行完成后,有消息通知
3 同步,异步:指的是消息通知机制

4 阻塞,非阻塞:程序在等待调用结果的状态
5 同步阻塞:打电话要买书,如果电话没挂,我也一直在等待,
6 同步非阻塞:打电话买书,电话没挂,我一边干别的事,一边听一下电话
7 异步阻塞:打电话买书,电话先挂掉,过一会老板会回回来(回调),老板给回电话的过程一直在等待
8 异步非阻塞:打电话买书,电话先挂掉,过一会老板会回回来(回调),老板给回电话的过程中,在干别的事

四、如何开启多进程

开启多进程需要multiprocessing模块下的一个Process类

from multiprocessing import Process
import time


def wirte_file(s):
    time.sleep(5)  # 让程序暂停五秒,以免执行太快

    with open('a.txt', 'a') as f:
        f.write(s)
        f.write('\n')


if __name__ == '__main__':
    time.sleep(5)
    # 第一个参数必须是执行的函数
    p = Process(target=wirte_file, args=['egondsb'])
    p.start()  # 执行第一个进程

    p1 = Process(target=wirte_file, args=['llnb'])
    p1.start()  # 执行第二个进程

a.txt文件内容如下

egondsb
llnb

posted @ 2021-04-22 20:55  黑影Poco  阅读(71)  评论(0)    收藏  举报