【发布时间】:2018-07-12 16:34:47
【问题描述】:
我正在尝试使用 Python 3.6 多处理一个高度可并行化的问题。问题涉及在实例化时传递数组的类。其中一个成员函数遍历数组并处理数据,然后将其写入另一个列表。我用传统的串行计算附上了这个问题的简化版本;但是,我对多处理示例有点迷茫。我正在尝试创建 2 个进程,一个将从 0 迭代到 4,另一个从 5 迭代到输入列表的长度(即 8)。我不知道我是否正确设置了进程,此外我不确定如何正确加入线程。我不确定这是否应该涉及 Que 或 daeman,我们将不胜感激。
from multiprocessing import Process
class Test:
def __init__(self, array_list):
self.array_list = array_list
def func(self, names):
return 'Test' + names
def iterate(self, upper, lower):
output = [self.func(self.array_list[i]) for i in range(lower, upper)]
return output
if __name__ == "__main__":
# Serial method
test_list = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
obj1 = Test(test_list)
results = obj1.iterate(len(test_list), 0)
print(results)
# Attempt at multiprocessed method (Im lost at this point!)
p = []
p[0] = Process(target=obj1.iterate, args=(4, 0, ))
p[1] = Process(target=obj1.iterate, args=(8, 5, ))
【问题讨论】:
-
"Can Someone Help Me?" is not a valid SO question。这通常表明您需要的是与当地导师相处或完成教程,而不是 Stack Overflow。
-
要了解您是否“正确”地设置了进程,请运行您的代码。使用
print语句跟踪执行情况。分阶段工作,而不是尝试一次编写整个设计。当您一次只跟踪一个问题时,调试会容易很多。我已经从两种方式的经验中学到了最后一项。 :-)
标签: python python-3.x python-multiprocessing