python 学习日记 第35天 并发——进程

一、什么是进程?

  1. 进程(Process): 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统机构的基础

  2.进程的组成:

    a.代码段: 用来描述进程要完成那些功能以及如何完成

    b.数据段: 程序在执行过程中所需要使用的资源

    c.PCB(进程管理控制):记录进程的外部特征,描述进程的执行变化过程,系统可以用它来控制和管理进程,他是系统感知进程存在的唯一标志

  3.进程的三大基本状态:

    a.就绪状态(Ready):当进程已分配到除Cpu以外的所有必要资源,只要获得Cpu便可立即执行,称为就绪状态。

    b.执行状态(Running):当进程已获得处理机,该程序正在处理机上执行,此时称为执行状态

    c.阻塞状态(Blocked):正在执行的进程,由于某些原因无法执行的时候,便放弃处理机,处于阻塞状态,重新等待获取cpu

  4.进程的理论:

    a.   .sh  shell脚本文件

    b.   .out      linux系统中的可执行文件

    c.    .bat     批处理脚本文件

    d.    .lib      库文件

    e.    .dll      库

    f.     .exe    可执行文件

  5.进程的特殊状态----挂起状态:

    是指因为某种原因,进程放弃cpu,导致进程无法继续执行,此时进程被踢出内存

  6.进程中一些名词的解释:

    并发:是指在一段时间段内,所完成的任务叫做

    并行:是指在同一时间点下,能够执行任务的数量

    同步:是指前一段任务完成的情况下,才能执行后一段的任务

    异步:各自任务执行各自任务,相互不受影响

 

  7.python中关于进程中的模块:

    在python中,有一个multiprocessing内置模块,由python提供,主要用于多进程编程

    调用方法:

       1 from multiprocessing import Process 

 

二、关于子进程的实践问题:

  1.如何创建一个子进程:

      

 1 from multiprocessing import Process
 2 
 3 
 4 def func():
 5     pass
 6 
 7 
 8 if __name__ == '__main__':
 9     p = Process(target=func)
10     p.start()

    在该段代码中 ,p = Process(target = func)  这句话代表的是实例化一个子进程对象

            p.start()  表示开启次子进程

  2.进程中常用的方法:

    start,join

 1 from multiprocessing import Process
 2 import time
 3 
 4 def func():
 5     for i in range(500):
 6         time.sleep(0.01)
 7         print('儿子在这里')
 8 
 9 if __name__ == '__main__':
10     p = Process(target=func)
11     p.start()
12     p.join()# 是让主进程等待子进程执行完。  现象:主进程执行到这句话,主进程阻塞住,等待子进程执行
13     # time.sleep(1)
14     for i in range(100):
15         time.sleep(0.01)
16         print('爸爸在这里')
17 
18 # 开启一个正常的子进程,父进程会等待子进程结束后,父进程也就是程序才结束
19 # p.join()# 是让主进程等待子进程执行完。  现象:主进程执行到这句话,主进程阻塞住,等待子进程执行
20 # 如何把父进程和子进程之间的关系变为同步或者异步?
21 # 父进程执行join,就会变成同步,不执行join,父进程和子进程就是异步的关系
22 # join必须放在start()后边

  3.进程中常用的属性:

from multiprocessing import Process
import time
import os

def func():
    print('这里是儿子,儿子的pid是%s'%(os.getpid()))

if __name__ == '__main__':
    p = Process(target=func)
    p.start()
    p.name = 'alex'
    print('儿子的名字是%s'%p.name)
    print('儿子的pid是%s'%p.pid)
    print('儿子是不是守护进程?',p.daemon)


# p.name   进程的名字
# p.pid       进程的序号
# p.daemon 看是否是守护进程

 

posted @ 2018-08-20 17:06  Chamster  阅读(192)  评论(0编辑  收藏  举报