【发布时间】:2020-12-24 08:29:43
【问题描述】:
我有一种方法可以使用多种其他方法计算最终结果。它内部有一个while循环,不断检查新数据,如果收到新数据,它会运行其他方法并计算结果。这个 main 方法是唯一由用户调用的方法,它一直保持活动状态,直到程序关闭。基本结构如下:
class sample:
def __init__(self):
results = []
def main_calculation(self):
while True:
#code to get data
if newdata != olddata:
#insert code to prepare data for analysis
res1 = self.calc1(prepped_data)
res2 = self.calc2(prepped_data)
final = res1 + res2
self.results.append(final)
我想并行运行 calc1 和 calc2,这样可以更快地得到最终结果。但是,我不确定如何以这种方式实现多处理,因为我没有使用__main__ 保护。有没有办法并行运行这些进程?
这可能不是这段代码的最佳组织,但对于我正在运行的实际计算来说,这是最简单的,因为有必要从不同的文件导入和运行这段代码。但是,如果这不是可挽救的结构,我可以重构代码。
【问题讨论】:
-
您能否澄清一下您认为
__main__守卫与多处理有什么关系?我不太确定我是否了解您真正想知道的内容,但我希望找到答案会让您更清楚。 -
@DavidZ 你好!到目前为止,在我发现的所有示例中,用于启动并行进程的行都在主守卫内,并且我发现了对不使用时出现的错误的引用:stackoverflow.com/questions/47705228/… 我得到了这个当我尝试从 while 循环内部并行启动进程时也会出错。谢谢!
-
好的,谢谢,这确实有助于澄清事情。您能否编辑您的问题以使其包含该信息?我会看看我能不能想出一个答案。
标签: python parallel-processing multiprocessing