繁体   English   中英

如何使用多处理来更快地运行 function?

[英]How can one use multiprocessing to run a run a function faster?

我正在调用 function 并将两个输出保存到变量中,但此过程需要时间,因为输出是通过求解 ODE 生成的。

是否可以使用多个内核更快地运行 function,以便更快地保存值? 如果是这样,有人可以提供一个简单的例子吗?

谢谢

简单地在多个内核上运行相同的代码不会让它运行得更快。 这实际上取决于您执行的任务类型。 在您决定代码是否会从并行处理中受益之前,您需要找到以下问题的答案:

  • 您的计算序列中的步骤是否相关? 换句话说,代码的一部分是否依赖于前面所做的计算? 或者其中一些可以并行计算? 查看Amdahl 定律,了解基于您可以并行化多少代码的预期加速

  • 您的代码是否涉及大量读/写磁盘和 memory? 还是只是大量的计算? 如果您正在对磁盘进行大量读取和访问,那么在您的线程等待磁盘时创建多个进程来执行其他工作可能会导致显着的加速。 但同样,这取决于您对上一点关于序列依赖性的回答

  • 您的代码目前需要多长时间才能运行? 创建多个进程的开销是否会超过顺序运行所需的时间? 在您的问题中,您没有给出具体的时间 - 如果您正在谈论加速需要几秒钟的任务,那么与整个任务的时间相比,创建多个进程所需的时间可能很重要。 但是,如果您正在谈论一项需要几分钟的任务,那么开销就不会那么大

  • 您是否考虑过您的代码是数据并行还是任务并行 如果是这样,您可以决定是否要使用 CPU 或 GPU 进行并行化。 对于大型数学运算,请查看基于 CPU 的 Numpy 和基于 GPU 的操作的 Cupy。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM