我经常运行一个耗时的程序。我有机会访问我需要504处理器的集群,但客户服务让我们说慢,所以我转向你。我使用的是一个非常简单的应用程序:
import multiprocessing
def function(data):
data = complicated_function_I_was_given(data)
with open('unique_id', 'w') as f:
f.write(data)
pool = multiprocessing.Pool(504)
pool.map(function, data_iterator)
现在,虽然我可以看到进程开始('complex_function_I_was_given'写了一堆废料,但是有了唯一的名称,所以我确信没有冲突),这个过程似乎很慢。我希望data
中的某些data_iterator
可以立即处理,但有些会花费数天,但是1天之后就没有生成任何内容。难道是multiprocessing.Pool()有限制吗?或者它不会在不同节点上分发进程(我知道每个节点有12个核心)?我正在使用python2.6.5。
答案 0 :(得分:3)
或者它不会在不同节点上分发进程(我知道每个节点有12个核心)?我正在使用python2.6.5。
我认为这是您的问题:除非您的群集架构非常不寻常,并且所有处理器似乎位于同一逻辑计算机上,否则多处理只能访问本地核心。您可能需要使用不同的并行化库。
答案 1 :(得分:1)
您可能尝试使用Python的许多parallel libraries之一来扩展工作,我没有听说只使用多处理来扩展这么多处理器的工作。