gpt4 book ai didi

python - 多处理锁装饰器在运行时崩溃

转载 作者:行者123 更新时间:2023-12-01 07:29:48 25 4
gpt4 key购买 nike

我正在尝试多处理,并尝试使用带有装饰器的锁来轻松实现,但它在运行时崩溃

def lock_dec(func):
def wrapper(*args , **kwargs):
Lock().acquire()
func(args)
Lock().release()

return wrapper

是装饰器

@lock_dec
def add_no_lock(total):
for i in range(100):
time.sleep(0.01)
total.value += 5

这就是函数

   add_process = Process(target = add_no_lock , args = (total , ))
add_process.start()

我收到此错误,但无法调试代码

Can't pickle local object 'lock_dec.<locals>.wrapper

最佳答案

经过 24 小时的尝试和调试后进行编辑,我通过使用 decorators with arguments 找到了解决方案

def loc_dec_parent(*args , **kwargs):
def lock_dec(func):
@wraps(func)
def wrapper(*arg , **kwarg):
kwargs['lock'].acquire()
try:
func(*arg)
finally:
kwargs['lock'].release()
return wrapper
return lock_dec

函数是

@loc_dec_parent(lock = Lock())
def add_no_lock(total):
for i in range(100):
time.sleep(0.01)
total.value += 5

这对我有用

关于python - 多处理锁装饰器在运行时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57262374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com