0

我有一个 python 脚本,它从一个 API 收集 10,000 个“人”,然后继续请求另外两个 API 收集有关他们的更多数据,然后将信息保存到本地数据库,每人大约需要 0.9 秒。

所以目前需要很长时间才能完成。多线程有助于加快速度吗?我在本地尝试了一个多线程测试,它比较慢,但是这个测试只是一个简单的函数,没有任何 API 交互或任何与 web/disk 相关的东西。

谢谢

4

1 回答 1

0

你有几个核心?

该过程的可并行性如何?

问题是 CPU 受限吗?

如果您有多个内核并且可以在它们之间进行并行处理,那么您可能会获得速度提升。除非执行得非常好,否则多线程的开销不会接近 100%,所以这是一个加分项。

另一方面,如果慢速部分受 CPU 限制,那么研究 C 扩展或 Cython 可能会更有成效。与单纯使用multiprocessing. 显然 100 倍的加速仅适用于翻译后的代码。

但是,说真的,简介。很可能有比这更容易获得的低垂果实。尝试使用线分析器(例如,称为line_profiler[也称为kernprof] 的)和内置的 cProfile。

于 2013-09-24T21:21:02.643 回答