python execnet不关闭频道

时间:2018-06-11 08:37:45

标签: python

我试图以下列方式在我的项目中使用execnet库:

import execnet

....

gw = execnet.makegateway('popen//python=py -2.7')
channel = gw.remote_exec("""
                    from my_module import execute as my_function
                    channel.send(my_function(*channel.receive()))
                    """)
channel.send(my_arguments)
return channel.receive()

代码运行良好,并返回给我预期的值。 但是,在我的场景中,我将其作为线程池的一部分执行,并且给定执行该函数的X任务,所有通道进程(py.exe)都保持活动状态,直到主进程停止。 我试图将my_function更改为最简单的 - 打印并退出 - 但行为仍然相同。

这是正常行为吗?关闭这些渠道的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

分组网关和强大的终端 所有创建的网关实例都是组的一部分。如果你调用execnet.makegateway,它实际上会被转发到execnet.default_group。组对象是容器对象(请参阅组示例)并管理最终终止过程:

Group.terminate(超时=无)