循环Python多处理

时间:2014-12-14 21:40:43

标签: python multiprocessing

我有一个for循环,循环超过5000天的数据点。每天有500个类实例需要处理每个事件。例如:

class SimpleClass:
    def __init__(self,name):
        self.name = name
        self.final_value = 0
    def process(self,x):
        self.final_value = x+1   #this is an absurd simplification

# Create N Class instances
ind = []
for i in xrange(0,500):
    ind.append( SimpleClass(str(i)) )

# Main processing loop
for j in xrange(0,5000):

    # Is there a way of speeding this up?
    for k in ind:
        k.process(j)

以上是一个非常简单的例子,但它突出了我想要做的事情。内部for循环显然很慢,但是如果我可以将它并行化,或者任何睡眠方式消耗那些j那么它会加速它。有任何想法吗?我在多处理库方面经验不多。

1 个答案:

答案 0 :(得分:1)

您应该查看multiprocessing Python库,特别是map()及其“可迭代”(而不是列表构建器)对应imap()。该文档包含的示例在我看来与您尝试的内容非常接近。

但是你必须知道,如果程序的性能受到CPU速度的限制,由于GIL(Global Interpreter Lock),这可能对你没有帮助。