进程数据隔离,守护进程,锁,信号量和事件

Posted ahliucong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程数据隔离,守护进程,锁,信号量和事件相关的知识,希望对你有一定的参考价值。

主要内容:

# Process
# 1.进程之间的数据隔离问题
# 2.守护进程

# 几个进程的模型 ---- 进程同步的工具
# 有先后顺序 就是同步
# 进程之间 就是异步
# 希望原本异步的多进程操作,维持一个顺序 -- 同步工具
# 3.锁 Lock *****
# 4.信号量 Semaphore ***
# 5.事件 Event **

 

1.进程之间的数据隔离问题

from multiprocessing import Process

n = 100
def fun():
    global  n
    n -= 1
    
    return n
if __name__ == __main__:
    p = Process(target=fun)
    p.start()
    print(n)

"""
# 进程与进程之间的数据是隔离的
# 内存空间是不能共享的
# 所以要想进行通信,必须借助其他手段
# 且这两个进程都是自愿的

# 子进程的执行结果父进程获取不到
# 父进程依赖子进程的执行结果呢
# 父进程如何获取子进程的执行结果???
    # 父子进程之间通过socket通信
"""

 

2.守护进程

# 设置成守护进程之后 会有什么效果呢?
# 守护进程会在主进程的代码执行完毕之后直接结束,无论守护进程是否执行完毕

from multiprocessing import Process
import time


def fun():
    print("start")
    time.sleep(3)
    print("这是一个好天气")

if __name__ == __main__:
    p = Process(target=fun)
    p.daemon = True
    # 守护进程的属性,默认是False,如果设置成True,就表示设置这个子进程为一个守护进程
    # 设置守护进程的操作应该在开启子进程之前
    p.start()
    time.sleep(1)
    print("主进程结束了!")

    # 设置成守护进程之后 会有什么效果呢?
    # 守护进程会在主进程的代码执行完毕之后直接结束,无论守护进程是否执行完毕

 

关于守护进程的一个需要注意的点,示例如下:(注意下面的fun2里面的in fun2只运行了两次,是跟随主函数的)

import time
from multiprocessing import Process

def fun():
    print("start")
    time.sleep(3)
    print("今天天气不错")
def fun2():
    while True:
        print("in fun2")
        time.sleep(0.5)

if __name__ == __main__:
    p = Process(target=fun)
    p.start()
    p = Process(target=fun2)
    p.daemon = True
    p.start()
    time.sleep(1)
    print("主程序结束了")

"""
运行结果如下:
in fun2
start
in fun2
主程序结束了
今天天气不错
"""

守扩应用主要有如下功能.:

    # 报活 主进程还活着
    # 100台机器 100个进程  10000进程
    # 应用是否在正常工作 - 任务管理器来查看
    # 守护进程如何向监测机制报活???send/写数据库
    # 为什么要用守护进程来报活呢?为什么不用主进程来工作呢???
        # 守护进程报活几乎不占用CPU,也不需要操作系统去调度
        # 主进程能不能严格的每60s就发送一条信息

 










以上是关于进程数据隔离,守护进程,锁,信号量和事件的主要内容,如果未能解决你的问题,请参考以下文章

《python》join守护进程锁/信号量/事件进程队列

20190102(多线程,守护线程,线程互斥锁,信号量,JoinableQueue)

13 join 线程锁之LockRlock信号量 将线程变为守护进程 Event事件  queue队列 生产者消费者模型 Queue队列 开发一个线程池

守护进程,模拟抢票例子,互斥锁,信号量,队列总结

锁机制,信号量机制,事件机制

多进程(了解),守护进程,互斥锁,信号量,进程Queue与线程queue