我有一个相当大的 Python 程序(约 800 行),其结构如下:
该程序是大规模并行的,因为主函数的每次执行都独立于前一个和下一个函数。因此,我使用 Ray 在集群中的多个工作节点上并行执行主函数。操作系统为 CentOS Linux 版本 8.2.2004(Core),集群执行 PBS Pro 19.2.4.20190830141245。我使用的是 Python 3.7.4、Ray 0.8.7 和 Redis 3.4.1。
我的Python脚本中有以下内容,foo主要函数在哪里:
@ray.remote(memory=2.5 * 1024 * 1024 * 1024)
def foo(locInd):
# Main function
if __name__ == '__main__':
ray.init(address='auto', redis_password=args.pw,
driver_object_store_memory=10 * 1024 * 1024 * 1024)
futures = [foo.remote(i) for i in zip(*np.asarray(indArr == 0).nonzero())]
waitingIds = list(futures)
while len(waitingIds) > 0:
readyIds, waitingIds = ray.wait(
waitingIds, num_returns=min([checkpoint, len(waitingIds)]))
for r0, r1, r2, …Run Code Online (Sandbox Code Playgroud)