• 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()
    # 守护进程
  • 相关阅读:
    testing
    mysql的collation
    使用elk+redis搭建nginx日志分析平台
    安装logstash,elasticsearch,kibana三件套
    技术晨读_2014_12_22
    laravel中的错误与日志
    maven仓库--私服(Nexus的配置使用)
    Youtube的论文《Deep Neural Networks for YouTube Recommendations》
    2018中国区块链应用生态发展报告
    阿里云云盾抗下全球最大DDoS攻击(5亿次请求,95万QPS HTTPS CC攻击) ,阿里百万级QPS资源调度系统,一般的服务器qps多少? QPS/TPS/并发量/系统吞吐量
  • 原文地址:https://www.cnblogs.com/daien522556/p/9360554.html
Copyright © 2020-2023  润新知