Python多处理示例。永不终止

Shi*_*tan 1 python terminate multiprocessing

我是Python多重处理的新手,遇到了一个教程,因此尝试检查其多重处理。在这里,进程不会终止。他们永远在奔跑。怎么了。?我读到,当可选参数为true时,该过程不会终止。因此,我在那儿放了空声明。但该过程仍不会终止。请指教。谢谢。我正在使用的机器具有Python 2.7.6,这是我的代码

from multiprocessing import Process
from Queue import Empty,Queue
import math
def isprime(n):
    if not isinstance(n,int):
            raise TypeError("argument is not of int type")
    if n<2:
            return False
    if n==2:
            return True
    max= int(math.ceil(math.sqrt(n)))
    i=2
    while i<=max:
            if n%i==0:
                    return False
    return True
def sum_primes(n):
    return sum([x for x in xrange(2,n) if isprime(x)])
def do_work(q):
    while True:
            try:
                    x=q.get(block=False)
                    print sum_primes(x)
            except Empty:
                    break
if __name__=="__main__":
    work_queue=Queue()
    for i in range (100000,5000000,100000):
            work_queue.put(i)
    processes=[Process(target=do_work, args=(work_queue,)) for i in range(8)]
    for p in processes:
            p.start()
    for p in processes:
            p.join()
Run Code Online (Sandbox Code Playgroud)

小智 5

您的第一个while循环:

while i<=max:
    if n%i==0:
        return False
Run Code Online (Sandbox Code Playgroud)

永远不会终止。您没有增加i也没有减少,max因此,如果条件评估为true,则它将始终为true。为什么即使在while循环中它也应该只是if语句。