gpt4 book ai didi

python - multiprocessing 会是这个操作的一个很好的解决方案吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:18 25 4
gpt4 key购买 nike

while True:

Number = len(SomeList)

OtherList = array([None]*Number)

for i in xrange(Number):
OtherList[i] = (Numpy Array Calculation only using i_th element of arrays, Array_1, Array_2, and Array_3.)

'Number' OtherList 和其他数组中的元素个数可以单独计算。但是,由于该程序是时间相关的,因此在处理完每个“Number”个元素之前,我们无法继续进行进一步的工作。

多处理会是这个操作的好解决方案吗?我应该最大限度地加快这个过程。如果更好,请推荐代码。

最佳答案

It is possible to use numpy arrays with multiprocessing但你现在不应该这样做。

阅读A beginners guide to using Python for performance computing及其 Cython version: Speeding up Python (NumPy, Cython, and Weave) .

在不知道数组的具体计算或大小的情况下,这里是没有特定顺序的通用指南:

  • 衡量代码的性能。寻找热点。您的代码加载输入数据的时间可能比所有计算的时间都长。设定目标,定义可接受的权衡
  • 通过自动化测试检查您是否获得了预期的结果
  • 检查您是否可以使用优化的库来解决您的问题
  • 确保算法具有足够的时间复杂度。对于大型 n
  • ,纯 Python 中的 O(n) 算法可能比 C 中的 O(n**2) 算法更快
  • 使用切片和矢量化(自动循环)计算来取代纯 Python 解决方案中的显式循环。
  • 使用 weave、f2py、cython 或类似工具重写需要优化的地方。提供类型信息。探索编译器选项。确定加速是否值得保留 C 扩展。
  • 尽量减少分配和数据复制。使其缓存友好。
  • 探索多线程是否对您的情况有用,例如 cython.parallel.prange()。发布 GIL。
  • 与多处理方法进行比较。上面的链接包含一个示例,说明如何并行计算数组的不同切片。
  • 迭代

关于python - multiprocessing 会是这个操作的一个很好的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933555/

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