zoukankan      html  css  js  c++  java
  • 进程

    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('')

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

  • 相关阅读:
    c# 清楚表格美容
    linux下svn迁移目录操作
    XML 操作(判断用户登录)
    confirm弹出一个包含"确定"与"取消"的对话方块.
    Js获取当前日期时间及其它操作
    简单实用方法!!
    随机数概率解决思路
    简单的SQL语句!!
    JS验证表单大全
    C语言系列(三):最近重拾C语言的想法,谈到C中易错点,难点;以及开源代码中C语言的一些常用技巧,以及如何利用define、typedef、const等写健壮的C程序
  • 原文地址:https://www.cnblogs.com/z18271397173/p/9221589.html
Copyright © 2011-2022 走看看