• 【代码学习】PYTHON 进程


    一、进程和程序的区别

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

      正在运行的代码,称之为进程

      进程除了包含的代码意外,还需要运行的环境等

    二、fork

    import os
    import time
    # 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以
    ret = os.fork()
    if ret == 0:
        while True:
            print ("----1----")
            time.sleep(1)
    else:
        while True:
                    print ("----2----")
                    time.sleep(1)

    以上代码运行结果:

    ----2----
    ----1----
    ----2----
    ----1----
    ----2----
    ----1----
    ----2----
    ----1----
    ----2----
    ----1----

    注意:

    >0 为主(父)进程  ==0位子进程

    1、fork函数,只在Unix/Linux/Mac上运行,windows不可以

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

    三、getpid()和getppid()

    1、getpid()获取当前进程的ID值

    2、getppid()获取子进程中父进程ID号

      1 import os
      2 rpid = os.fork()
      3 print ("父子进程都可以执行这里的代码")
      4 if rpid < 0:
      5     print ("fork调用失败")
      6 elif  rpid == 0:
      7     print ("我是子进程(%s),我是父进程(%s)"%(os.getpid(),os.getppid()))
      8 else:
      9     print ("我是父进程(%s),我是父进程(%s)"%(os.getpid(),rpid))
     10 print ("父子进程都可以执行这里的代码")

    以上代码运行结果

    我是父进程(6811),我是父进程(6812)
    父子进程都可以执行这里的代码
    root:~$ 我是子进程(6812),我是父进程(4788)
    父子进程都可以执行这里的代码

     四、父子进程的执行顺序

    父进程、子进程执行顺序没有规律,完全取决于操作系统的调度算法

    五、多进程修改全局变量

    多进程中,每个进程中所有数据(包括全局变量)都各有拥有一份,互不影响

    import os
    import time
    g_num = 100
    ret = os.fork()
    if ret ==0:
        print ("----process-1----")
        g_num += 1
        print ("----process-1 g_num=%d----"%g_num)
    else:
        time.sleep(3)
        print ("----process-2----")
        print ("----process-2 g_num=%d----"%g_num)

    以上代码运行结果:

    ----process-1----
    ----process-1 g_num=101----
    ----process-2----
    ----process-2 g_num=100----

    六、多个fork问题

    import os
    os.fork()
    os.fork()
    os.fork()
    print ("----1----")

    以上代码运行结果:

    ----1----
    ----1----
    ----1----
    ----1----
  • 相关阅读:
    java_类承继其他类的内部类例子
    java_接口和抽象类的区别
    java_数组作缓存池的不可变类实例
    C++_归并排序(纯C版)
    C++_归并排序
    C++_快速排序(纯C版本)
    C++_快速排序
    C++_直接插入排序(纯C版)
    C++_直接插入排序
    自定义比较器的用法
  • 原文地址:https://www.cnblogs.com/sqyysec/p/7263560.html
Copyright © 2020-2023  润新知