zoukankan      html  css  js  c++  java
  • day37 进程理论 多进程

    # import os
    # import time
    # print(os.getpid())
    # print(os.getppid())
    # time.sleep(100)
    import os
    import time
    from multiprocessing import Process  # 进程模块
    #
    # def func():
    #     time.sleep(2)
    #     print('in func',os.getpid(),os.getppid())
    #
    #
    # if __name__ == '__main__':
    #     print('in main',os.getpid(),os.getppid())
    #     p1 = Process(target=func)  # 进程对象
    #     p1.start()  # 向操作系统提交了一个开启子进程的申请
    #     p2 = Process(target=func)  # 进程对象
    #     p2.start()  # 向操作系统提交了一个开启子进程的申请
    #     print('主进程 的 代码执行结束了')
    # 原理
    # if __name__ == '__main__':
        # 使用python都是调用操作系统的命令来启动进程
        # 同样使用python 不同的操作系统的操作是不同的
        # 对于windows来说 必要加if __name__ == '__main__':
        # 对于linux ios来说 不必要加if __name__ == '__main__':
    # 给子进程传参数
    # def func(num):
    #     time.sleep(2)
    #     print('in func',num,os.getpid(),os.getppid())
    #
    #
    # if __name__ == '__main__':
    #     print('in main',os.getpid(),os.getppid())
    #     p1 = Process(target=func,args=(1,))  # 进程对象
    #     p1.start()  # 向操作系统提交了一个开启子进程的申请
    #     p2 = Process(target=func,args=(2,))  # 进程对象
    #     p2.start()  # 向操作系统提交了一个开启子进程的申请
    #     print('主进程 的 代码执行结束了')
    # 其他方法和属性
    # 1.开启多个子进程
    # def func(num):
    #     print('in func',num,os.getpid(),os.getppid())
    #
    # if __name__ == '__main__':
    #     print('in main',os.getpid(),os.getppid())
    #     for i in range(10):
    #         p = Process(target=func,args=(i,))
    #         p.start()  # start不是运行一个程序,而是调用操作系统的命令,要创建子进程
    #     print('主进程 的 代码执行结束了')
    # 2.join方法
    # def func(num):
    #     time.sleep(1)
    #     print('in func',num,os.getpid(),os.getppid())
    #
    # if __name__ == '__main__':
    #     print('in main',os.getpid(),os.getppid())
    #     p = Process(target=func,args=(1,))
    #     p.start()  # start不是运行一个程序,而是调用操作系统的命令,要创建子进程
    #     p.join()   # 阻塞,直到p这个子进程执行完毕之后再继续执行
    #     print('主进程 的 代码执行结束了')
    # 3.一批任务使用join
    def func(num):
        print('in func',num,os.getpid(),os.getppid())
    if __name__ == '__main__':
        print('in main',os.getpid(),os.getppid())
        p_l = []
        for i in range(10):
            p = Process(target=func,args=(i,))
            p.start()  # start不是运行一个程序,而是调用操作系统的命令,要创建子进程,非阻塞
            p_l.append(p)
        print(p_l)
        for p in p_l :
            p.join() # 阻塞,直到p这个子进程执行完毕之后再继续执行
        print('主进程 的 代码执行结束了')
    # 4.is_alive terminate
    # def func(num):
    #     time.sleep(2)
    #     print('in func',num,os.getpid(),os.getppid())
    #
    #
    # if __name__ == '__main__':
    #     print('in main',os.getpid(),os.getppid())
    #     p1 = Process(target=func,args=(1,))  # 进程对象
    #     p1.start()  # 向操作系统提交了一个开启子进程的申请
    #     print(p1.is_alive())  # 检测进程是否在执行任务
    #     p1.terminate()   # 强制结束子进程 - 非阻塞
    #     print(p1.is_alive())  # 检测进程是否在执行任务
    #     print('主进程 的 代码执行结束了')
    # 用面向对象的方式开启子进程
    # class MyProcess(Process):
    #     def __init__(self,num):
    #         super().__init__()
    #         self.num = num
    #     def run(self):
    #         print('in run ',self.num,os.getpid(),os.getppid())
    #
    # if __name__ == '__main__':
    #     print('in main ', os.getpid(), os.getppid())
    #     p = MyProcess(1)
    #     p.start()
    # 守护进程
  • 相关阅读:
    向存储过程中传入列表参数
    TRUNCATE TABLE (Transact-SQL)
    Program.cs
    联想G40-30 安装win10系统
    完美解决github访问速度慢[转]
    关于Visual studio 2017安装方法的若干问题
    [转载] 中国象棋软件-引擎实现(七)测试程序
    [转载] 中国象棋软件-引擎实现(六)局面评估
    [转载] 中国象棋软件-引擎实现(五)历史启发及着法排序
    [转载] 中国象棋软件-引擎实现(四)搜索算法
  • 原文地址:https://www.cnblogs.com/daien522556/p/9360554.html
Copyright © 2011-2022 走看看