题目
介绍一下进程同步锁的概念?
回答
进程同步锁是用于协调多个进程对于一个共享资源调用的机制,避免在同一时刻,有多个进程同时对共享资源进行调用,避免出现数据混乱。优点是保证了数据的安全性,缺点是容易发生进程堵塞,降低运行速度。以下的示例作为参考:
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("所有工作完成")
``