Python多处理的限制.Pool

时间:2012-02-26 05:53:39

标签: python multiprocessing cluster-computing

我经常运行一个耗时的程序。我有机会访问我需要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。

2 个答案:

答案 0 :(得分:3)

  

或者它不会在不同节点上分发进程(我知道每个节点有12个核心)?我正在使用python2.6.5。

我认为这是您的问题:除非您的群集架构非常不寻常,并且所有处理器似乎位于同一逻辑计算机上,否则多处理只能访问本地核心。您可能需要使用不同的并行化库。

另请参阅answers to this question

答案 1 :(得分:1)

您可能尝试使用Python的许多parallel libraries之一来扩展工作,我没有听说只使用多处理来扩展这么多处理器的工作。