我正在使用并行 Python 来运行下面的代码。任何人都可以更正代码吗?这应该为输入列表中超过 20 的值打印“SORRY”。这仍然适用于超过 20 的值。
#http://www.parallelpython.com/
import sys,time,pp
import numpy
n=int(raw_input("Enter the value of n: "))
#Enter any integer value
#Define is_low function as a filter
def is_low(n):
if n < 20:
return True
if n > 20:
return False
def task(n):
return (numpy.arange(n))
def expansion(n):
if is_low(n)==True:
return (task(n))
if is_low(n)==False:
print "SORRY"
ppservers=()
if len(sys.argv) > 1:
ncpus = int(sys.argv[1])
job_server = pp.Server(ncpus, ppservers=ppservers)
else:
job_server = pp.Server(ppservers=ppservers)
print job_server.get_ncpus()
job1=job_server.submit(task,(n,),(is_low,expansion,),("numpy","sys",))
result=job1()
print result
ppservers = ()
if len(sys.argv) > 1:
ncpus = int(sys.argv[1])
job_server = pp.Server(ncpus, ppservers=ppservers)
else:
job_server = pp.Server(ppservers=ppservers)
print "Starting pp with", job_server.get_ncpus(), "workers"
start_time = time.time()
inputs = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,21,22,23,24,25,26)
jobs = [(input, job_server.submit(task,(input,),(expansion,is_low,), ("numpy","sys","time",))) for input in inputs]
for input, job in jobs:
print "Expansion for the below",input,"is",job()
print "Time elapsed: ", time.time() - start_time, "s"
job_server.print_stats()