python 中的多处理命名空间
multiprocessing namespace in python
import multiprocessing
def everyM01D000200(ns):
print(ns.a) # '123c'
if __name__ == '__main__':
mgr = multiprocessing.Manager()
ns = mgr.Namespace()
ns.a = '123c'
print(ns.a)
p1 = multiprocessing.Process(target=everyM01D000200, args=(ns,))
p1.start()
我原以为它会打印为“123c”,但出现了错误。
FileNotFoundError: [WinError 2] 找不到指定的文件。
也许从函数中取命名空间的变量时有不同的过程。
我认为问题在于您的主进程在加入子进程之前终止,即等待它完成,并且 SyncManager
进程服务代理方法调用创建的任何托管对象,例如NameSpace
您创建的实例已终止。 FileNotFoundError
异常是由于代理对象与SyncManager
进程之间通信所用的multiprocessing.Pipe
中断(SyncManager
端的连接已关闭)。
import multiprocessing
def everyM01D000200(ns):
print(ns.a) # '123c'
if __name__ == '__main__':
mgr = multiprocessing.Manager()
ns = mgr.Namespace()
ns.a = '123c'
print(ns.a)
p1 = multiprocessing.Process(target=everyM01D000200, args=(ns,))
p1.start()
# Wait for subprocess completion:
p1.join()
打印:
123c
123c
import multiprocessing
def everyM01D000200(ns):
print(ns.a) # '123c'
if __name__ == '__main__':
mgr = multiprocessing.Manager()
ns = mgr.Namespace()
ns.a = '123c'
print(ns.a)
p1 = multiprocessing.Process(target=everyM01D000200, args=(ns,))
p1.start()
我原以为它会打印为“123c”,但出现了错误。 FileNotFoundError: [WinError 2] 找不到指定的文件。
也许从函数中取命名空间的变量时有不同的过程。
我认为问题在于您的主进程在加入子进程之前终止,即等待它完成,并且 SyncManager
进程服务代理方法调用创建的任何托管对象,例如NameSpace
您创建的实例已终止。 FileNotFoundError
异常是由于代理对象与SyncManager
进程之间通信所用的multiprocessing.Pipe
中断(SyncManager
端的连接已关闭)。
import multiprocessing
def everyM01D000200(ns):
print(ns.a) # '123c'
if __name__ == '__main__':
mgr = multiprocessing.Manager()
ns = mgr.Namespace()
ns.a = '123c'
print(ns.a)
p1 = multiprocessing.Process(target=everyM01D000200, args=(ns,))
p1.start()
# Wait for subprocess completion:
p1.join()
打印:
123c
123c