zoukankan      html  css  js  c++  java
  • 开启子进程的两种方法

    开启子进程的方法一、

    # -*- coding: utf-8 -*-
    
    from multiprocessing import Process
    
    import time
    
    
    def task(name):
        print('%s is running' % name)
        time.sleep(3)
        print('over%s' % name)
    
    
    # 注意,在windows系统中, 创建进程会将代码以模块方式从头到尾加载一遍
    # 强调函数名一旦加括号,执行优先级最高
    # 创建进程在windows系统中一定要写在 if __name__ == '__main__': 否则会循环导入
    if __name__ == '__main__':
        p1 = Process(target=task, args=('qzk',))  # 这句话只是实例化的Process 的一个方法
        p1.start()  # 告诉操作系统创建一个进程,这只是告诉操作系统需要创建进程,什么时候创建,创建哪一个不知道
        p1.join()  # 主进程等待子进程结束才继续运行,其作用仅仅是让主进程等待子进程,不会影响子进程的进行
        print('主进程')
    

      开启子进程的方式二、

    """
    方式二、
        创建一个继承Process的类,该类里面一定有一个run方法,实例化过程中 __init__()中为了防止数据属性与父类的重复导致名称空间问题,
        需要在init方法中继承父类的init super().__init__()再 self.name = name
    """
    from multiprocessing import Process
    import time
    
    
    class MyProcess(Process):
        def __init__(self, name):
            super().__init__()
            self.name = name
        
        def run(self):
            print('%s is running' % self.name)
            time.sleep(2)
            print('%s is end' % self.name)
    
    
    if __name__ == '__main__':
        obj = MyProcess('egon')  # 类实例化过程创建一个进程对象
        obj.start()  # .start() 是调用start方法,告诉操作系统去创建一个子进程
        time.sleep(3)
        print('主进程')
    

      

  • 相关阅读:
    Linux-文件目录管理
    20. 有效的括号
    242. 有效的字母异位词
    387. 字符串中的第一个唯一字符
    136. 只出现一次的数字
    14. 最长公共前缀
    268. 丢失的数字
    169. 多数元素
    26. 删除有序数组中的重复项
    283. 移动零
  • 原文地址:https://www.cnblogs.com/qianzhengkai/p/10821395.html
Copyright © 2011-2022 走看看