Python多进程挂起



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

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次,如预期的那样。"print ne"也可以运行100次。

问题是final不打印,代码不完整。

如何解决这个问题?

编辑:另外,既然这个被否决了,有人能解释一下我做错了什么/为什么我被否决了吗?

程序运行正常——直到print final。然后它会花费大量的时间来打印这个数字,这个数字非常大。

相关内容

  • 没有找到相关文章

最新更新