zoukankan      html  css  js  c++  java
  • python-开启进程的两种方法;进程对象的方法或属性详解

    # 方式一:通用版
    # from multiprocessing import Process
    # import  time
    # def task(x):
    #     print('%s is running '%x)
    #     time.sleep(3)
    #     print('%s is done'%x)
    #
    # if __name__ == '__main__':
    #     #p=Process(target=task,kwargs={'x':'子进程'})
    #     p=Process(target=task,args=('子进程',)) #这是元组,如果args=(),括号内只有一个参数,一定记住加括号
    #     p.start() #只是在操作系统发送一个开启子进程的信号,并不是创建进程,创建进程是操作系统来完成的
    #     print('主')
    
    # 方式二:自定义类
    from multiprocessing import Process
    import time
    
    
    class Myprocess(Process):
        def __init__(self, x):
            super().__init__()
            self.name = x
    
        def run(self):
            print('%s in runing' % self.name)
            time.sleep(3)
            print('%s is done ' % self.name)
    
    
    if __name__ == '__main__':
        p = Myprocess('子进程')
        p.start()  # 这里start 是直接执行p.run()
        print('主')
    
    # from multiprocessing import Process
    # import  time
    # def task(x):
    #     print('%s is running '%x)
    #     time.sleep(3)
    #     print('%s is done'%x)
    #
    # if __name__ == '__main__':
    #     #p=Process(target=task,kwargs={'x':'子进程'})
    #     p=Process(target=task,args=('子进程',)) #这是元组,如果args=(),括号内只有一个参数,一定记住加括号
    #     p.start() #只是在操作系统发送一个开启子进程的信号,并不是创建进程,创建进程是操作系统来完成的
    #     print('主')
    
    # 方式二:自定义类
    from multiprocessing import Process
    import time
    
    
    class Myprocess(Process):
        def __init__(self, x):
            super().__init__()
            self.name = x
    
        def run(self):
            print('%s in runing' % self.name)
            time.sleep(3)
            print('%s is done ' % self.name)
    
    
    if __name__ == '__main__':
        p = Myprocess('子进程')
        p.start()  # 这里start 是直接执行p.run()
        print('主')
    
    
     

    进程对象的方法或属性:

    join 让父进程在原地等待到子进程运行完毕后,才执行代码

    查看进程号的两种方式 :父进程pid查看子进程pid号,os.getpid()查看子进程,os.getppid()查看父进程

    courrent-process().name #在子进程中查看子进程名字

    print(p.is_alive())              #判断子进程有没有死

    p.terminate()                      #向操作系统发送杀死进程信号,真正杀死子进程取决操作系统

    # join 让父进程在原地等待到子进程运行完毕后,才执行代码
    # from multiprocessing import Process
    # import time
    #
    #
    # def task(name):
    #     print('%s in runing ' % name)
    #     time.sleep(5)
    #     print('%s in done ' % name)
    #
    #
    # if __name__ == '__main__':
    #     p = Process(target=task, args=('子进程'), )
    #     p.start()
    #     p.join()  # join #让父进程在原地等待到子进程运行完毕后,才执行代码
    #     print('主')
    
    # 循环创建多个子进程
    # from multiprocessing import Process
    # import time
    #
    #
    # def task(name, n):
    #     print('%s in runing' % name)
    #     time.sleep(n)
    #     print('%s is done ' % name)
    #
    #
    # if __name__ == '__main__':
    #     p_1 = []
    #     start = time.time()
    #     for i in range(1, 4):
    #         p = Process(target=task, args=('子进程%s' % i, i))
    #         p_1.append(p)
    #         p.start()  # 循环开启多个并发子进程
    #
    #     for p in p_1:
    #         p.join()  # 等待多个进程子进程运行完毕
    #     stop = time.time()
    #     print('主', stop - start)
    
    # from multiprocessing import Process
    # import time
    #
    #
    # def task(name):
    #     print('%s in runing ' % name)
    #     time.sleep(5)
    #     print('%s in done ' % name)
    #
    #
    # if __name__ == '__main__':
    #     p = Process(target=task, args=('子进程'), )
    #     p.start()
    #     p.join()  # join #让父进程在原地等待到子进程运行完毕后,才执行代码
    #     print('主')
    
    # 循环创建多个子进程
    # from multiprocessing import Process
    # import time
    #
    #
    # def task(name, n):
    #     print('%s in runing' % name)
    #     time.sleep(n)
    #     print('%s is done ' % name)
    #
    #
    # if __name__ == '__main__':
    #     p_1 = []
    #     start = time.time()
    #     for i in range(1, 4):
    #         p = Process(target=task, args=('子进程%s' % i, i))
    #         p_1.append(p)
    #         p.start()  # 循环开启多个并发子进程
    #
    #     for p in p_1:
    #         p.join()  # 等待多个进程子进程运行完毕
    #     stop = time.time()
    #     print('主', stop - start)
    
    
     
    #查看进程号的两种方式
    # pid查看进程pid号,os.getpid()查看子进程,os.getppid()查看父进程
    
    from multiprocessing import Process
    
    import time, os
    
    
    def task(n):
        print('%s in runing' % os.getpid())
        time.sleep(n)
        print('%s in done' % os.getpid())
    
    
    if __name__ == '__main__':
        p = Process(target=task, args=(10,))
        p.start()
        print(p.pid)  # 父进程里查看子进程pid号
    
    from multiprocessing import Process
    
    import time, os
    
    #方式二 父进程的父进程-父进程-子进程
    def task():
        print('自己的id:%s  父进程的id号:%s' % (os.getpid(), os.getppid()))#第一个是子进程,第二个是父进程
        time.sleep(10)
    
    
    if __name__ == '__main__':
        p = Process(target=task)
        p.start()
        print('主', os.getpid(), os.getppid())# 第一个是父进程 ,第二是父进程的父进程
    
    
    from multiprocessing import Process
    
    import time, os
    
    
    def task(n):
        print('%s in runing' % os.getpid())
        time.sleep(n)
        print('%s in done' % os.getpid())
    
    
    if __name__ == '__main__':
        p = Process(target=task, args=(10,))
        p.start()
        print(p.pid)  # 父进程里查看子进程pid号
    
    from multiprocessing import Process
    
    import time, os
    
    #方式二 父进程的父进程-父进程-子进程
    def task():
        print('自己的id:%s  父进程的id号:%s' % (os.getpid(), os.getppid()))#第一个是子进程,第二个是父进程
        time.sleep(10)
    
    
    if __name__ == '__main__':
        p = Process(target=task)
        p.start()
        print('主', os.getpid(), os.getppid())# 第一个是父进程 ,第二是父进程的父进程
    
    #current_process().name 在子进程中查看子进程名字
    #print(p.is_alive())#判断子进程有没有死
    # p.terminate()  #向操作系统发送杀死进程信号,真正杀死子进程取决于操作系统
    from  multiprocessing import Process, current_process
    import time
    
    def task():
        print('子进程[%s]运行。。。。。'%current_process())
    
    if __name__ == '__main__':
        p=Process(target=task,name='子进程')
        p.start()
    
        # print(p.is_alive())#判断子进程有没有死
        # p.join()
        # print(p.is_alive())
    
        p.terminate()  #向操作系统发送杀死进程信号,真正杀死子进程取决于操作系统
        time.sleep(1)
        print(p.is_alive())
        print('主')
    from  multiprocessing import Process, current_process
    import time
    
    def task():
        print('子进程[%s]运行。。。。。'%current_process())
    
    if __name__ == '__main__':
        p=Process(target=task,name='子进程')
        p.start()
    
        # print(p.is_alive())#判断子进程有没有死
        # p.join()
        # print(p.is_alive())
    
        p.terminate()  #向操作系统发送杀死进程信号,真正杀死子进程取决于操作系统
        time.sleep(1)
        print(p.is_alive())
        print('主')
  • 相关阅读:
    HDU 4725 The Shortest Path in Nya Graph(优先队列+dijkstra)
    POJ 3216 Repairing Company(二分图匹配)
    POJ 3414 Pots(bfs打印路径)
    POJ 3278 Catch That Cow(bfs)
    poj 3009 curling2.0 (dfs)
    用“道”的思想解决费用流问题---取/不取皆是取 (有下界->有上界) / ACdreamoj 1171
    hdu2448 / 费用流 / harbin赛区c题
    大数类模板(+-*/%等等)
    hdu4619 / 最大独立集
    hdu4888 多校B 最大流以及最大流唯一判断+输出方案
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111931.html
Copyright © 2011-2022 走看看