这是我的代码:
import multiprocessing
import dill
class Some_class():
class_var = 'Foo'
def __init__(self, param):
self.name = param
def print_name(self):
print("we are in object "+self.name)
print(Some_class.class_var)
def run_dill_encoded(what):
fun, args = dill.loads(what)
return fun(*args)
def apply_async(pool, fun, args):
return pool.apply_async(run_dill_encoded, (dill.dumps((fun, args)),))
if __name__ == '__main__':
list_names = [Some_class('object_1'), Some_class('object_2')]
pool = multiprocessing.Pool(processes=4)
results = [apply_async(pool, Some_class.print_name, args=(x,)) for x in list_names]
output = [p.get() for p in results]
print(output)
它返回错误:
^{pr2}$没有print(Some_class.class_var)
行,代码可以正常工作。访问类变量有什么问题,两个对象都应该有它,我不认为进程应该对此产生冲突。我错过什么了吗?
关于如何排除故障有什么建议吗?不要担心run_dill_encoded
和
apply_async
,在python3.x上编译multiprocess
之前,我一直在使用这个解决方案
注:这已经足够了,但是stackoverflow想让我写更多的细节,不知道该放什么。在
目前没有回答
相关问题 更多 >
编程相关推荐