0

我正在使用Manager来自 pythonsmultiprocessing库的。我想在线程之间共享变量。

所以我有一个函数,这个函数在内部使用了一个这样的变量。由于 python 的多处理规则,我需要将Manager和 变量放在if __name__ == '__main__':. 是否有一种聪明的方法仍然可以访问变量status?下面的代码:

from multiprocessing import Value, Manager

def first_methode():
    if status.value:
        do_something...

if __name__ == '__main__':
    manager = Manager()
    recording_status = manager.Value(status, False)
    thread = multiprocessing.Process(target=first_methode)

这给了我一个

NameError: name 'status' is not defined

有什么建议么?谢谢!

4

1 回答 1

2

您没有status在任何地方定义变量,因此无论是否存在您都无法访问它multiprocessing。您可能的意思是manager.Value("status", False),即文字字符串"status",而不是称为变量status

此外,请查看文档中的示例,也许还有此处的代码,因为代码中的其他一些内容已关闭,例如,Value您创建的对象应作为参数传递给子进程/函数。否则函数中的代码无法分辨是什么status,因为它没有在函数的范围内定义。

于 2021-02-02T23:14:07.327 回答