Python多处理示例。永不终止
我对Python多处理相当陌生,我遇到了一个教程,因此尝试检查它的多处理。在这里,进程不会被终止。他们永远在奔跑。怎么了。?我读到当可选参数为true时,进程不会终止。所以我把空的陈述放在那里。但这一过程仍然没有结束。请告知。谢谢我使用的机器有Python 2.7.6 这是我的密码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
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来创建进程守护程序,并查看脚本是否会退出