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()方法实现并发下的串行的效果
  • 相关阅读:
    leetcode 279. Perfect Squares
    leetcode 546. Remove Boxes
    leetcode 312. Burst Balloons
    leetcode 160. Intersection of Two Linked Lists
    leetcode 55. Jump Game
    剑指offer 滑动窗口的最大值
    剑指offer 剪绳子
    剑指offer 字符流中第一个不重复的字符
    leetcode 673. Number of Longest Increasing Subsequence
    leetcode 75. Sort Colors (荷兰三色旗问题)
  • 原文地址:https://www.cnblogs.com/zhouyi0316/p/9592334.html
Copyright © 2011-2022 走看看