小编tk4*_*orm的帖子

python多处理池终止

我正在使用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终止但后台进程仍在运行.任何人都可以推荐更好的方法来控制这些推出的程序吗

python pool multiprocessing

10
推荐指数
3
解决办法
4万
查看次数

标签 统计

multiprocessing ×1

pool ×1

python ×1