我有一个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
那么它会加速它。有任何想法吗?我在多处理库方面经验不多。
答案 0 :(得分:1)
您应该查看multiprocessing Python库,特别是map()
及其“可迭代”(而不是列表构建器)对应imap()
。该文档包含的示例在我看来与您尝试的内容非常接近。
但是你必须知道,如果程序的性能受到CPU速度的限制,由于GIL(Global Interpreter Lock),这可能对你没有帮助。