2013-01-11 73 views
0

我开始学习Python中的多处理,但已到达我的代码只是挂起点。它只是使用多线程计算1 000 000阶乘。Python多处理挂起

import multiprocessing 

def part(n): 
    ret = 1 
    n_max = n + 9999 
    while n <= n_max: 
     ret *= n 
     n += 1 
    print "Part "+ str(n-1) + " complete" 
    return ret 

def buildlist(n_max): 
    n = 1 
    L = [] 
    while n <= n_max: 
     L.append(n) 
     n += 10000 
    return L 

final = 1 
ne = 0 
if __name__ == '__main__': 
    pool = multiprocessing.Pool() 
    results = [pool.apply_async(part, (x,)) for x in buildlist(1000000)] 
    for r in results: 
     x = r.get() 
     final *= x 
     ne+= 1 
     print ne 
    print final 

我已经包含了一些打印功能,试图诊断,其中的代码挂起,并且将打印在部分功能包括字符串100倍,符合市场预期。 “印刷品”也工作100次。

问题是最终不会打印,代码没有完成。

我该如何解决这个问题?

编辑此外,由于这是downvoted,有人可以解释我做错了/为什么我被低估?

+2

'1000!= 8.2639316883×10 ^(5,565,708)'没有什么简单的。 – Daniel

+0

当然不是,但代码很简单。 – Acebulf

+0

我的意思是说,没有多处理的阶乘的代码是相对简单的代码。 – Acebulf

回答

1

程序正常工作---直到print final。然后它花了很大的时间试图打印这个数字,这是非常巨大的...

+0

是的,当我让它运行约15分钟后,它完成了计算,并按照您的评论。 – Acebulf