gpt4 book ai didi

python - 使用任务管理器进行并行计算

转载 作者:行者123 更新时间:2023-11-28 19:13:19 26 4
gpt4 key购买 nike

我需要在 python 中运行一些并行计算。我能想到的唯一兼容方法是多进程/fork 模型,由于以下几个原因,它不太理想:

  • 据我所知,Windows 中的 fork 很贵
  • 细粒度的流程管理(信号,即 SIGSTOP/SIGCONT)很笨拙(即在语言之外)

这些是任务要求:

  • 任务可能产生新任务
  • 任务必须在任务管理器中注册
  • 任务不需要共享状态
  • 任务必须返回一个值(python对象)

任务管理器负责调度和限制并发任务数。这些是任务管理器的要求:

  • 当一个新任务开始时,任务管理器可以根据预定的限制暂停其他任务
  • 当任务返回时,任务管理器可以继续其他挂起的任务
  • 当请求任务的返回值时,任务管理器可以重新组织任务优先级(防止死锁)

所以你看,任务管理器不需要是并行/并发进程。每个任务都可以在启动或停止时同步调用任务管理器。等待其他任务的任务也可以进行同步调用。

我似乎想不出任何其他方法:

  • asyncio 可以在有限的池中启动并行进程,但这种方法更适合数据并行而不是任务抢占。外部抢占任务(挂起)与协作编程的事件不兼容。如果我错了,请纠正我,但是虽然我可以使用 asyncio,但它不会让我的生活更轻松(没有好处的抽象),因为我仍然需要使用进程,并在“任务启动/停止”事件?
  • stackless python 可能是合适的,但它不是真正的 python?

有什么想法吗?

附言我的最终目标是自动并行化(修饰)函数调用。任务管理器限制并行执行的任务数量(即递归函数)以避免抖动(fork 炸弹)。我需要使用 python,尽管惰性(任务等待)、纯(无共享状态)和无堆栈(轻量级线程)语言可能更合适...

最佳答案

哇,这个问题很老了,我很惊讶 Stackless Python 用户没有插话......

话又说回来,Stackless Python 曾经/现在远远领先于它的时代,我们中很少有人将它投入使用。

Stackless Python 确实是 Python。它不仅仅是 Python,但它仍然是 Python。

Stackless Python Wiki

我认为它能很好地满足您的需求。它仍然是最新的,并在本月最近一次提交维护。它相当坚固,非常适合我的需要。

关于python - 使用任务管理器进行并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37125321/

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