• day 30-2 网络编程——认识进程


    多进程

    主要参数

    p = Process(target=func, )      # 实例化
    p.pid                           # 查看 pid
    p.start()                       # 启动进程
    p.join()                        # 让主进程检测子进程是否运行完毕
    p.name()                        # 查看进程名
    p.terminate()                   # 终止进程 
    p.is_alive()                    # 查看进程是否存活,返回值:True、False。
    os.getpid()                     # 参看pid
    os.getppid()                    # 查看ppid,父级

    开启子进程的两种方法

    方法一:

    from multiprocessing import Process
    import time
    
    def pro(name):
        print('this is %s' % name)
        time.sleep(3)
        print('子进程运行结束')
    
    
    if __name__ == '__main__':
        # p1 = Process(target=pro, args=('ysg',))
        p = Process(target=pro, kwargs={'name': 'ysg'})
        p.start()
        print('this is 主进程')

    方法二:

    from multiprocessing import Process
    import time
    
    class Pro(Process):
        def __init__(self, name):
            super().__init__()
            self.name = name
    
        def run(self):
            print('this is %s' % self.name,)
            time.sleep(3)
            print('子进程运行结束')
    
    if __name__ == '__main__':
        p = Pro('ysg')
        p.start()
        print('this is 主进程')

     

    .join()  串行与非串行

    from multiprocessing import Process
    import time
    import os
    
    
    def func(name, times):
        print('this is 子进程 %s' % (name))
        time.sleep(times)
        print('进程结束')
    
    
    if __name__ == '__main__':
        start = time.time()
        p1 = Process(target=func, args=('子进程 1', 5))
        p2 = Process(target=func, args=('子进程 2', 3))
        p3 = Process(target=func, args=('子进程 3', 2))
    
        # 非串行   时间 5.109249591827393
        p_l = [p1, p2, p3]
        for p in p_l:
            p.start()
    
        for p in p_l:
            p.join()
    
        # 串行   时间 10.2953782081604
        # p1.start()
        # p1.join()
        # p2.start()
        # p2.join()
        # p3.start()
        # p3.join()
        
        print('this is 主进程,时间 %s' % (time.time()-start))

    进程属性及方法

    from multiprocessing import Process
    import time
    
    
    def func(name):
        print('this is 子进程:%s' % (name))
        time.sleep(3)
    
    
    if __name__ == '__main__':
        p = Process(target=func, args=('子进程 1',), name='sub_name')  # 设置子进程名称,存在默认值
        p.start()
        print(p.is_alive())  # True
        p.terminate()  # 终止进程
        time.sleep(1)
        print(p.is_alive())  # False
        p.join()
        print('this is 主进程')
        print(p.name, p.pid)  # sub_name 9240
  • 相关阅读:
    Linux 信号signal处理机制
    va_start、va_arg、va_end、va_copy 可变参函数
    辛星笔记——VIM学习篇(推荐阅读)
    每个程序员都应该读的书
    igmpproxy源代码学习——配置信息加载 loadConfig
    windows下gvim搭建IDE
    插入排序与循环不变式
    6个变态的C语言程序
    安卓原生百度地图(5)导航和语音播报
    安卓原生百度地图(4)路线规划
  • 原文地址:https://www.cnblogs.com/ysging/p/12313004.html
Copyright © 2020-2023  润新知