我有一些代码可以执行以下操作:
我的问题在于第三项任务;我希望能够获得已处理函数的返回值。这是我的代码(我编写了声明p.returnValue(),因为这是我正在尝试做的事情):
#Start process
p = multiprocessing.Process(target=globals()['solvePuzzle'], args=(filename,))
p.start()
#Wait for timeLimit seconds or until process finishes
p.join(timeLimit)
#If thread is still active
if p.is_alive():
print "Puzzle timed out after " + str(timeLimit) + " seconds!"
# Terminate
p.terminate()
p.join()
else:
print "Solution = " + str(p.returnValue())
答案 0 :(得分:0)
进程有一个退出代码。这通常在linux中用于指示作业是否成功。返回码为' 0'表示成功。可以使用代码中的以下更改来获取进程的返回代码。
import multiprocessing
import time
timeLimit = 200
#Start process
def start():
p = multiprocessing.Process(target=time.sleep, args=(10,))
p.start()
#Wait for timeLimit seconds or until process finishes
p.join(timeLimit)
#If thread is still active
if p.is_alive():
print "Puzzle timed out after " + str(timeLimit) + " seconds!"
# Terminate
p.terminate()
p.join()
else:
print "Solution = " + str(p.exitcode)
start()
如果您要从流程返回一个整数,则可以使用此方法。如果你有其他类型的值(例如字符串),你试图回来,那么你需要使用队列。查看http://pymotw.com/2/multiprocessing/communication.html
上的示例