zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    SCSI contrller的几种类型的区别
    ScaleIO与XtremSW Cache如何集成呢?
    如何强制使用某一大小的包去ping某个IP地址?
    如何查看ETW Trace?
    图像卷积与滤波的一些知识点(转)
    tensorflow serving 编写配置文件platform_config_file的方法
    python在linux的报错集锦
    某些数组和字符串类型转换(转)
    系统安装-007 CentOS7yum源添加、删除及其yum优化(转)
    Error:Failed to resolve: android.arch.core:common:1.1.0
  • 原文地址:https://www.cnblogs.com/ysging/p/12313004.html
Copyright © 2011-2022 走看看