进程

1.多任务

一个cpu同时做好多事情就叫做多任务

2.时间片轮转

每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间

3.优先调度

系统的进程会比开发者开发的优先调度

4.并发

在多核系统里面,同时执行多个进程,一般情况下会有些进程没有机会执行,这种情况就是并发

5.并行

在多核系统里面,同时执行多个进程吗,这些进程都有机会执行

6.进程的创建

进程:正在运行的代码叫进程

程序:没有运行的代码叫程序

--1.fork()

python中的os模块封装了常用的系统调用其中就包括fork()可以在python程序中创建子进程

说明:

程序执行到os.fork()时,操作系统会创建一个新的额进程(子进程),然后复制主进程的所有信息到子进程中

然后主进程和子进程都会从fork()函数中得到一个返回值,在子进程中这个值一定是0,而主进程中是子进程的ID号

在Linux操作系统中,提供了一个fork()系统函数,它非常特殊

普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回2次,因为操作系统自动把当前进程复制了一份,然后,分别在子进程和主进程内返回。

子进程永远返回0,而主进程返回子进程的ID

这样做的理由是,一个主进程可以fork很多子进程,所以,主进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到主进程的ID

7.getpid()和getppid()

8.进程与进程之间数据不共享

import os

import time

num = 0

pid = os.fork()

if pid == 0:

i = 0

while i < 5:

print("当前子进程,num==%d"%num)

num += 1

time.sleep(1)

i += 1

else:

i = 0

while i < 5:

print("当前主进程,num==%d"%num)

time.sleep(2)

num += 1

i += 1


运行结果:

当前主进程,num==0

当前子进程,num==0

当前子进程,num==1

当前主进程,num==1

当前子进程,num==2

当前子进程,num==3

当前主进程,num==2

当前子进程,num==4

当前主进程,num==3

当前主进程,num==4

说明:

多进程中,每个进程中所有数据都各拥有一份,互不影响

9.多次fork()问题

10.进程的创建-multiprocessing

由于python是跨平台的,自然也应该提供一个跨平台的多进程

使用process创建子进程:


主进程等待process子进程结束:

multiprocessing模块提供了一个Process类来代表一个进程对象

join等待子进程结束

说明:

创建子进程时,只需要传入一个执行函数和函数的参数,创建一个process实例,用start()方法启动,这样创建进程比fork()还要简单。

join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 9,620评论 0 23
  • Linux 进程管理与程序开发 进程是Linux事务管理的基本单元,所有的进程均拥有自己独立的处理环境和系统资源,...
    JamesPeng阅读 7,186评论 1 14
  • 12.1进程切换 实际上为用户提供的系统调用服务,用户在执行它的应用的过程当中,有需求要创建一个新的进程,如何来创...
    龟龟51阅读 3,541评论 0 1
  • 本文仍然是受益于开学初陈艳教授的讲座。特此致谢! 哈哈,一次讲座,干货满满,启发思考,能写出很多实用的文章呢! “...
    三分之一2015阅读 3,736评论 0 0
  • 俩个生活环境不同的人 就算没有什么障碍相处在一起 但是 总会有另一个人是小心翼翼并敏感的 或许是想的多 可是 跨不...
    mingw阅读 2,224评论 0 0