我正在使用renderfarm,我需要我的客户端能够启动渲染器的多个实例,而不会阻塞,因此客户端可以接收新的命令.我已经正常工作,但是我无法终止创建的进程.
在全局级别,我定义了我的池(以便我可以从任何函数访问它):
p = Pool(2)
Run Code Online (Sandbox Code Playgroud)
然后我用apply_async调用我的渲染器:
for i in range(totalInstances):
p.apply_async(render, (allRenderArgs[i],args[2]), callback=renderFinished)
p.close()
Run Code Online (Sandbox Code Playgroud)
该函数完成,在后台启动进程,并等待新命令.我做了一个简单的命令,将杀死客户端并停止渲染:
def close():
'close this client instance'
tn.write ("say "+USER+" is leaving the farm\r\n")
try:
p.terminate()
except Exception,e:
print str(e)
sys.exit()
sys.exit()
Run Code Online (Sandbox Code Playgroud)
它似乎没有给出错误(它会打印错误),python终止但后台进程仍在运行.任何人都可以推荐更好的方法来控制这些推出的程序吗