他是Parallel python的新手,正在编写一个简单的代码,可以并行添加数字,代码可以很好地添加数字,但我想知道如何在完成后使用作业的输出,如果可能?我的代码如下:
import sys, time
import pp
import numpy
x = numpy.arange(-20.0,20.0,0.5)
grav = []
gravity = numpy.zeros([4,1])
def function(raw_input,x,grav):
f = 0
for i in numpy.arange(len(x)):
f+=1
a=raw_input[0]
b=raw_input[1]
c=raw_input[2]
d=raw_input[3]
grav.append((a+b+c+d)+f)
return grav
for i in numpy.arange(2):
# tuple of all parallel python servers to connect with
ppservers = ()
#ppservers = ("10.0.0.1",)
if len(sys.argv) > 1:
ncpus = int(sys.argv[1])
# Creates jobserver with ncpus workers
job_server = pp.Server(ncpus, ppservers=ppservers)
else:
# Creates jobserver with automatically detected number of workers
job_server = pp.Server(ppservers=ppservers)
print "Starting pp with", job_server.get_ncpus(), "workers"
start_time = time.time()
# The following submits 4 jobs and then retrieves the results
puts = ([1,2,3,4], [3,2,3,4],[4,2,3,6],[2,3,4,5])
jobs = [(raw_input, job_server.submit(function,(raw_input,x,grav), (), ("numpy",))) for raw_input in puts]
for raw_input, job in jobs:
print "Sum of numbers", raw_input, "is", job()
print grav
print "Time elapsed: ", time.time() - start_time, "s"
job_server.print_stats()
print gravity
#gravity[i] = grav
这打印出4个结果,即90,92,95,94,并给出统计数据等。 所以我的问题是我怎么能使用4个结果数字,我希望它们被转储到称为引力的数组中,但是我无法弄清楚如何。 谢谢
答案 0 :(得分:2)
您需要存储作业()功能的结果。请尝试以下代码:
import sys, time
import pp
import numpy
x = numpy.arange(-20.0,20.0,0.5)
grav = []
gravity = numpy.zeros([4,1])
def function(raw_input,x,grav):
f = 0
for i in numpy.arange(len(x)):
f+=1
a=raw_input[0]
b=raw_input[1]
c=raw_input[2]
d=raw_input[3]
grav.append((a+b+c+d)+f)
return grav
jobsList = []
for i in numpy.arange(2):
# tuple of all parallel python servers to connect with
ppservers = ()
#ppservers = ("10.0.0.1",)
if len(sys.argv) > 1:
ncpus = int(sys.argv[1])
# Creates jobserver with ncpus workers
job_server = pp.Server(ncpus, ppservers=ppservers)
else:
# Creates jobserver with automatically detected number of workers
job_server = pp.Server(ppservers=ppservers)
print "Starting pp with", job_server.get_ncpus(), "workers"
start_time = time.time()
# The following submits 4 jobs and then retrieves the results
puts = ([1,2,3,4], [3,2,3,4],[4,2,3,6],[2,3,4,5])
jobs = [(raw_input, job_server.submit(function,(raw_input,x,grav), (), ("numpy",))) for raw_input in puts]
for raw_input, job in jobs:
r = job()
jobsList.append(r)
print "Sum of numbers", raw_input, "is", r
print grav
print "Time elapsed: ", time.time() - start_time, "s"
job_server.print_stats()
print gravity
for job in jobsList:
print job