zoukankan      html  css  js  c++  java
  • python之锁, 队列

    进程的其他方法

    进程id,进程名字,查看进程是否活着is_alive()  terminate()发送结束进程的信号

     

    import time
    import os
    from multiprocessing import Process
    
    def f1():
        print('子进程pid', os.getpid())
        print('父进程pid', os.getppid())
        print('我是f1')
    
    if __name__ == '__main__':
        p = Process(target=f1)
        p.start()
        print(p.name)
        print('子进程的pid',p.pid)
        print('父进程的pid',os.getpid())
    
    
    def f1():
        time.sleep(5)
        print('子进程1号')
    
    if __name__ == '__main__':
        p = Process(target=f1)
        p.start()
        print(p.is_alive()) # 查看进程是否还活着, 返回True或False
        p.terminate() # 给操作系统发送一个结束进程
        time.sleep(0.5)
        print(p.is_alive())

     

    验证进程之间是空间隔离的:

    from multiprocessing import Process
    
    num = 100
    
    def f1():
        global num
        num = 3
        print('子进程num:', num)
    
    if __name__ == '__main__':
        p = Process(target=f1)
        p.start()
        p.join()
        print('主进程num:', num)

    守护进程:

    import time
    from multiprocessing import Process
    
    def f1():
        time.sleep(3)
        print('xxxx')
    
    def f2():
        time.sleep(5)
        print('普通子进程的代码')
    if __name__ == '__main__':
        p = Process(target=f1,)
        p.daemon = True  #将该进程设置为守护进程,必须写在start之前,意思如果我的主进程代码运行结束了,你这个子进程不管运行到什么地方,都直接结束
        p.start()
    
        #开启一个普通的子进程来验证一下守护进程的结束只和主进程的代码运行结束有关系,而整个程序的结束需要主进程和普通的子进程的代码都运行结束才结束
        p2 = Process(target=f2,)
        p2.start()
        #等待2号普通进程的结束,才继续执行下面主进程中的代码
        # p2.join()
        #守护进程会跟跟着父进程的代码运行结束,就结束
        print('主进程结束')

    互斥锁: 

    import time
    from multiprocessing import Process,Lock
    def f1(i,lic):
        lic.acquire()
        time.sleep(1)
        print(i)
        lic.release()
    
    if __name__ == '__main__':
        lic = Lock()
        for i in range(5):
            p = Process(target=f1, args=(i,lic))
            p.start()

     

  • 相关阅读:
    一般删除网页数据和jquery下使用Ajax删除数据的区别
    JavaScript 局部刷新
    ASP.net 网站开发知识点总结
    deque
    DHCP协议
    IP分类以及特殊IP
    重载运算符函数及其注意事项
    linux gdb基本概念
    std::vector 源代码
    iterator 的设计原则和traits
  • 原文地址:https://www.cnblogs.com/q455674496/p/10251088.html
Copyright © 2011-2022 走看看