gpt4 book ai didi

python - 并行 Python - 在并行执行中将对象创建到另一个类中

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:46 25 4
gpt4 key购买 nike

我正在尝试使用并行 Python 做一些非常简单的事情。我希望能够从一个类中创建一个对象,该类是我在另一个方法中创建的,该类用于并行执行一项工作。这是我想让它工作的基本示例:

import pp

class TestClass(object):
def __init__(self):
pass
def doSomething (self, number) :
print number**2

class PPTask (object) :
def __init__ (self) :
pass
def ppTask(self, number = 1) :
sum = 0
sum += number
tc = TestClass()
tc.doSomething(sum)
return sum

if __name__ == '__main__' :
job_server = pp.Server()
job_list = []
results = []
for i in xrange(10) :
pt = PPTask()
job_list.append(job_server.submit(pt.ppTask, (1,), globals = globals()))
for job in job_list :
results.append(job())
for result in results :
print result

这会引发 NameError: global name 'TestClass' is not defined 并且我没有找到任何解决方案来传递它或在 ppTask 方法中重用它。

如有任何帮助,我们将不胜感激。

提前致谢

最佳答案

一个解决方案是告诉作业服务器为您提交的每个作业导入源模块本身。例如,如果您上面的脚本名为 pptest.py,您可以像这样创建作业:

job_list.append(job_server.submit(pt.ppTask, (1,), modules=('pptest',)))

ppTask 中,您可以像这样实例化 TestClass:

tc = pptest.TestClass()

总的来说,代码应该是这样的:

import pp

class TestClass(object):
def __init__(self):
pass
def doSomething (self, number) :
print number**2

class PPTask (object) :
def __init__ (self) :
pass
def ppTask(self, number = 1) :
sum = 0
sum += number
tc = pptest.TestClass()
tc.doSomething(sum)
return sum

if __name__ == '__main__' :
job_server = pp.Server()
job_list = []
results = []
for i in xrange(10) :
pt = PPTask()
job_list.append(job_server.submit(pt.ppTask, (1,), modules=('pptest',)))
for job in job_list :
results.append(job())
for result in results :
print result

关于python - 并行 Python - 在并行执行中将对象创建到另一个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9995391/

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