• Python笔记(29)----进程


    目录:

    一、进程

    1. 多任务的概念
    2. 创建子进程----fork【Linux】
    3. 全局变量在多个进程中不共享

    4. 多次fork()
    5. 创建进程----multiprocessing【windows】

    二、线程


    一、进程:

    1、多任务概念:多个任务同时进行

    (图片来源于https://www.cnblogs.com/wj-1314/p/8263328.html)

    • 并发:CPU单核完成多个任务的执行,常用的调度算法:时间片轮转、优先级调度;由于每个任务执行的时间片较短,所以让人觉得多个任务同时在进行。

    • 并行:多个CPU完成多个任务的执行。只能在多核CPU上实现,且CPU核数要比任务数量多。

    2、创建进程---fork【Linux】

    • 进程VS程序:

    程序:编写完毕的代码,在没有运行时称为程序。

    进程:正在运行着的代码,即进程。进程除了包含代码还需要运行的环境。

    • fork():创建进程
    import os
    import time
    
    ret = os.fork()
    
    if ret == 0:
        while True:
            print("----1----")
            time.sleep(1)
    else:
        while True:
            print("----2----")
            time.sleep(1)

    父进程运行到ret = os.fork()时,产生子进程,父进程ret 得到的值为>0,子进程ret = 0,两者就可以进行并行。操作系统中规定,父进程fork之后产生的ret值是大于0的,子进程ret = 0。

    os.getpid():获取当前进程的id。

    os.getppid():获取当前进程父进程的id。

     

    3、全局变量在多个进程中不共享

    4、多次fork():

    第一个fork():红色为父进程,绿色为其产生的子进程。父和子进程打印1和2.

    第二个fork():父进程又产生一个子进程,打印11和22。子进程也产生一个子进程,也打印11和22.

    故打印一次1和2,两次11和22。

    第一次fork():父进程产生一个子进程,两者打印1和2.

    第二次fork():父进程又产生一个子进程,打印11和22

    故共打印一次1和2,一次11和22

     总共产生2^3个进程。

    fork()炸弹:以下代码一旦执行,电脑可能会崩掉。

    5、创建进程----multiprocessing【windows】

    Process实现的进程,主进程会等所有子进程执行完毕之后才关闭;

    注意:multiprocessing模块在交互模式是不支持的,故在jupyter下也不执行。

    • 包: from multiprocessing import Process
    • 创建一个进程:Process()
    • Process中的参数:

    target = func,表示调用函数,即要创建的进程,

    args = [ 要传入func中的参数]

    • 与Process相关的常用函数:

    start():#让这个进程开始执行func函数里的代码,

    p.join():   #堵塞,等待进程结束再执行以下代码

    def test(a):
        while True:
            print(" ----test----")
            time.sleep(1)
    i = [0,1]
    p = Process(target = test,args =(i) )  #创建一个进程,创建test函数对象
    p.start()  #让这个进程开始执行test函数里的代码
    p.join()   #堵塞,等待进程结束再执行以下代码
    print('----main---')

     

     

  • 相关阅读:
    vs调试技巧
    ubuntu中安装Docker
    Docker的简单认知
    mysql笔记01
    5款实用的硬盘、SSD固态硬盘、U盘、储存卡磁盘性能测试工具绿色版
    怎么用HD Tune检测硬盘坏道
    Dreamweaver_CS6安装与破解
    Microsoft Office 2013 (64位) 免费完整版(安装 + 激活)
    Microsoft office2007免费版下载(安装 + 破解)
    OneNote如何使用
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/10178482.html
Copyright © 2020-2023  润新知