个人技术分享

文章目录

题目

介绍一下进程同步锁的概念?

回答

进程同步锁是用于协调多个进程对于一个共享资源调用的机制,避免在同一时刻,有多个进程同时对共享资源进行调用,避免出现数据混乱。优点是保证了数据的安全性,缺点是容易发生进程堵塞,降低运行速度。以下的示例作为参考:

import multiprocessing
import time
import random


def worker_with(lock, name, value):
    # 获取锁
    with lock:
        print(f'{name} 开始工作,当前值: {value}')
        # 模拟一些工作,如I/O操作或计算
        time.sleep(random.randint(1, 3))
        value += 1
        print(f'{name} 工作完成,更新后的值: {value}')


if __name__ == "__main__":
    # 初始化一个Lock对象
    lock = multiprocessing.Lock()
    value = 0  # 共享资源

    # 创建多个进程
    processes = []
    for i in range(5):
        p = multiprocessing.Process(target=worker_with, args=(lock, f'Worker-{i}', value))
        p.start()
        processes.append(p)

        # 等待所有进程完成
    for p in processes:
        p.join()

        # 注意:由于value是在多个进程中共享的,但在这个例子中,我们并没有真正地在多个进程之间共享它。
    # 如果我们想要在多个进程中共享并修改value,我们需要使用其他IPC机制,如Value或Array。
    print("所有工作完成")

``