问题描述
import ray
import requests as r
ray.init()
@ray.remote
def f(i):
print(i)
r.get("http://127.0.0.1:5000/" + str(i))
return i
if __name__ == "__main__":
for k in range(1000):
f.remote(k)
当我运行此脚本时,仅发生250个远程调用,并且程序终止而不是执行所有1000个远程调用。
即使查看了ray浏览器仪表板,我还是一无所知
当我设置local_mode = True时,程序将完成所有1000次调用
解决方法
f.remote(k)
开始执行远程调用,但不等待调用结束。因此,程序将在调用完成之前完成并关闭。
您应该使用ray.get
来确保通话结束。
refs = []
for k in range(1000):
refs.append(f.remote(k)
ray.get(refs)
有关更多详细信息,请参见this answer。