Python类继承多处理,访问类成员时遇到麻烦

Python类继承多处理,访问类成员时遇到麻烦,第1张

概述简而言之,我说有以下内容: import multiprocessingclass Worker(multiprocessing.Process): def __init__(self): multiprocessing.Process.__init__(self) print "Init" self.value = None 简而言之,我说有以下内容:
import multiprocessingclass Worker(multiprocessing.Process):    def __init__(self):        multiprocessing.Process.__init__(self)        print "Init"        self.value = None    def run(self):        print "Running"        self.value = 1p = Worker()p.start()p.join()print p.value

我希望输出为:

InitRunning1

相反,它是

InitRunningNone

有人可以向我解释为什么会这样吗?我不理解的是什么,我该如何正确地做到这一点?

谢谢.

解决方法 你说p.start()的那一刻,一个单独的进程就分离出了主进程.将复制所有变量值.因此主进程有一个p副本,分叉进程有一个单独的p副本. Worker修改分叉进程的p.value副本,但主进程的p.value仍为None.

有许多方法可以在进程之间共享对象.在这种情况下,也许最简单的方法是使用mp.Value:

import multiprocessing as mpclass Worker(mp.Process):    def __init__(self):        print "Init"        mp.Process.__init__(self)        self.num = mp.Value('d',0.0)    def run(self):        print "Running"        self.num.value = 1p = Worker()p.start()p.join()print p.num.value

请注意,mp.Value的默认值为0.0.它不能设置为None.

总结

以上是内存溢出为你收集整理的Python类继承多处理,访问成员时遇到麻烦全部内容,希望文章能够帮你解决Python类继承多处理,访问类成员时遇到麻烦所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存