Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python多处理示例。永不终止_Python_Multiprocessing_Terminate - Fatal编程技术网

Python多处理示例。永不终止

Python多处理示例。永不终止,python,multiprocessing,terminate,Python,Multiprocessing,Terminate,我对Python多处理相当陌生,我遇到了一个教程,因此尝试检查它的多处理。在这里,进程不会被终止。他们永远在奔跑。怎么了。?我读到当可选参数为true时,进程不会终止。所以我把空的陈述放在那里。但这一过程仍然没有结束。请告知。谢谢我使用的机器有Python 2.7.6 这是我的密码 from multiprocessing import Process from Queue import Empty,Queue import math def isprime(n): if not isi

我对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()
来自多处理导入进程的

从队列导入空,队列
输入数学
def iPrime(n):
如果不是isinstance(n,int):
raise TypeError(“参数不是int类型”)
如果n您的第一个while循环:

while i<=max:
    if n%i==0:
        return False
while i您的第一个while循环:

while i<=max:
    if n%i==0:
        return False

如上所述,您的问题是第一个while循环。下面是一个简化版本的代码,它修复了while循环问题,似乎可以执行您希望它执行的操作,还可以执行多进程(使用池而不是队列):

将多处理导入为mp
输入数学
def iPrime(n):
如果不是isinstance(n,int):
raise TypeError(“参数不是int类型”)

如果n如上所述,您的问题是第一个while循环。下面是一个简化版本的代码,它修复了while循环问题,似乎可以执行您希望它执行的操作,还可以执行多进程(使用池而不是队列):

将多处理导入为mp
输入数学
def iPrime(n):
如果不是isinstance(n,int):
raise TypeError(“参数不是int类型”)

如果在调用producer.start()之前尝试通过添加producer.daemon=True来创建进程守护程序,并查看脚本是否会在调用producer.start()之前通过添加producer.daemon=True来创建进程守护程序,并查看脚本是否会退出