zoukankan      html  css  js  c++  java
  • python全栈脱产第34天------开启进程的两种方式、join方法、进程对象其他相关的属性和方法、僵尸进程、孤儿进程、守护进程、互斥锁

    一、开启进程的两种方式

      方式一:

    from multiprocessing import Process
    import time

    def task(name):
    print('%s is running' %name)
    time.sleep(3)
    print('%s is done' %name)

    # 在windows系统上,开启子进程的操作必须放到if __name__ == '__main__'的子代码中
    if __name__ == '__main__':
    p=Process(target=task,args=('egon',)) #Process(target=task,kwargs={'name':'egon'})
    p.start() # 只是向操作系统发送了一个开启子进程的信号
    print('主')
      方式二:
    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(3)
    print('%s is done' %self.name)

    # 在windows系统上,开启子进程的操作必须放到if __name__ == '__main__'的子代码中
    if __name__ == '__main__':
    p=Myprocess('egon')
    p.start() # 只是向操作系统发送了一个开启子进程的信号
    print('主')
    二、join方法
      让主进程在原地等待,等待子进程运行完毕,不会影响子进程的执行
    三、进程对象相关属性
      进程pid:每一个进程在操作系统内都有一个唯一的id号,称之为pid
    四、僵尸进程和孤儿进程
      僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
      孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
    五、守护进程:本质就是一个'子进程',该'子进程'的生命周期<=被守护进程的生命周期
    六、互斥锁
      用mutex.acquire()方法实现并发下的串行的效果
  • 相关阅读:
    内存的静态分配和动态分配
    C#中堆和栈的区别分析
    NHibernate中的API
    我心中的核心组件(可插拔的AOP)~大话开篇及目录
    简单ORM工具的设计和编写,自己项目中曾经用过的
    NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译
    NHibernate.3.0.Cookbook第一章第五节Setting up a base entity class
    [NHibernate] Guid 作主键速度超慢的背后
    技术分析淘宝的超卖宝贝
    日志打屏对性能有多少影响
  • 原文地址:https://www.cnblogs.com/zhouyi0316/p/9592334.html
Copyright © 2011-2022 走看看