gpt4 book ai didi

python - Ipython 并行和多核进程

转载 作者:行者123 更新时间:2023-11-30 23:31:38 25 4
gpt4 key购买 nike

我想使用 ipython 并行在计算集群上执行作业。设置一切都相对简单,但我将执行的一些作业包括对多线程应用程序(生物信息学)的子进程调用。有没有一种简单的方法来告诉 ipython 单个 python 调用正在消耗多个核心或整个引擎?更一般地说,我想跟踪已使用和可用的资源,以便我可以运行异构作业(内存要求、核心要求)。

最佳答案

IPython 不会为单个任务进行任何资源分配。所有资源分配都是在引擎创建时完成的。例如,如果您的作业已经完全支持多线程和多核,那么您可能不需要每台物理机有多个 IPython 引擎。如果您的作业是单线程的,那么每个 CPU 核心一个引擎是合乎逻辑的。如果您的任务在多个非独占资源上受 IO 限制,那么您可能需要比内核更多的引擎。

如果您的工作高度异构(例如,某些任务仅限于一个线程,而其他任务则很乐意使用整个机器),那么你可能想要安排一些更复杂的日程安排。尝试此操作的两个有用信息是创建引擎子集的 View 。例如,集群中每台机器只有一个引擎的负载平衡和直接 View :

import socket
host_map = client[:].apply_async(socket.gethostname).get_dict()
r = { v:k for k,v in host_map.items() }
one_id_per_machine = list(r.values())
one_per_machine = client[one_id_per_machine]
lb_per_machine = client.load_balanced_view(one_id_per_machine)

另一个是 graph-based dependencies您可以使用它来创建障碍,允许一项任务阻止其他任务提交给其他引擎。

关于python - Ipython 并行和多核进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19768215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com