【发布时间】:2019-09-25 15:28:12
【问题描述】:
我是 Python 新手,我很难理解多处理/线程中的一些东西。我想加速一个函数,并一直在尝试与多处理模块不同的方法,但我无法让它运行得更快。它可能不会运行得更快,但我想在放弃之前确定是这种情况。这不是完整的描述,但最耗时的活动是:
-重复生成随机数据(10000行10列)
-使用预拟合模型来预测每一行的结果和
- 将每个预测值与初始值进行比较。
根据预测值中有多少等于初始值,它会执行多次,每次更新分布的参数。函数的输出是单个数值。
我想遍历其中的几个初始值并最终得到一个输出值列表。我希望让多个迭代同时运行(但我愿意接受任何可以让它更快的方法)。我一直在无知地尝试 pool.apply、starmap 和 Process,但没有及时看到变化。
我的问题是:
根据我在做什么的描述,我的程序 I/O 或 CPU 是否受限? (有没有可能从中看出?这甚至是正确的问题吗?)
我应该使用多线程还是多处理?
如何确定迭代是否同时运行?
【问题讨论】:
标签: python-3.x python-multiprocessing python-multithreading