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()

 

 

 

转载于:https://www.cnblogs.com/q455674496/p/10251088.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值