进程

1、进程的概念

     什么是进程—>CPU在同一时刻只能处理一个任务,只是因为cpu执行速度很快。 cpu在各个任务之间来回的进行切换。 进程的概念:正在进行的一个过程或者说一个任务,而负责执行任务的则是CPU,进程本身是 一个抽象的概念,即进程就是一个过程、一个任务。 
CPU描述的是一个程序的执行过程. 
进程之间是如何做到并发的:CPU在各个任务之间来回的进行切换,并在切换的过程当中保存当前 
进程的执行状态(保存蛋糕的执行过程)。 
进程与程序的区别:程序相当于菜谱,而进程相当于做菜的整个过程。 

2、并行与并发的区别

     无论是并行还是并发,在用户看来都是同时运行的,不管是进程还是线程,都只是一个任务而已, 
真正干活的是CPU,CPU来做这些任务,而一个cpu(单核)同一时刻只能执行一个任务。 
并行:多个任务同时运行,只有具备多个cpu才能实现并行,含有几个cpu,也就意味着在同一时刻可以执行几个任务。 
并发:是伪并行,即看起来是同时运行的,实际上是单个CPU在多道程序之间来回的进行切换

3、父进程和子进程之间的关系

  子进程创建后,父进程和子进程有各自不同的地址空间,多道技术要求物理层面实现进程之间内存的 
隔离,任何一个进程在其地址空间的修改都不会影响到另外一个进程。 
注意:子进程和父进程之间是可以有只读的共享的内存区域的。 
进程与进程之间数据(资源)是隔离的,两个进程之间可以基于管道这种方式进行通信。在Unix当中,是含有进程层次的概念的,但是在windows当中,是没有进程层次的概念的,所有的进程都是地位相同的。 
在Linux当中,每启动一个命令,都会启动一个进程。

创建一个进程:

from multiprocessing import Process
process =Process(target=test,args=(*,))#test:表示目标函数,args表示目标函数的参数
process.start()

 

开启子进程方法有两种:

方法一:

# 方式一:
from multiprocessing import Process
import time

def task(name):
    print('%s is running' %name)
    time.sleep(3)
    print('%s is done' %name)

if __name__ == '__main__':
    # Process(target=task,kwargs={'name':'子进程1'})
    p=Process(target=task,args=('子进程1',))
    p.start() #仅仅只是给操作系统发送了一个信号

    print('')

方法二:

from multiprocessing import Process
import time

class MyProcess(Process):
    def __init__(self,name):
        super().__init__()
        self.name=name

    def run(self):
        print('%s is running' %self.name)
        time.sleep(3)
        print('%s is done' %self.name)


if __name__ == '__main__':
    p=MyProcess('子进程1')
    p.start()
    print('')

第二种相对于第一种是通过类的方式进行调用。

posted @ 2018-06-24 20:17  笃行1995  阅读(105)  评论(0)    收藏  举报