我有一个 python 脚本,它从一个 API 收集 10,000 个“人”,然后继续请求另外两个 API 收集有关他们的更多数据,然后将信息保存到本地数据库,每人大约需要 0.9 秒。
所以目前需要很长时间才能完成。多线程有助于加快速度吗?我在本地尝试了一个多线程测试,它比较慢,但是这个测试只是一个简单的函数,没有任何 API 交互或任何与 web/disk 相关的东西。
谢谢
我有一个 python 脚本,它从一个 API 收集 10,000 个“人”,然后继续请求另外两个 API 收集有关他们的更多数据,然后将信息保存到本地数据库,每人大约需要 0.9 秒。
所以目前需要很长时间才能完成。多线程有助于加快速度吗?我在本地尝试了一个多线程测试,它比较慢,但是这个测试只是一个简单的函数,没有任何 API 交互或任何与 web/disk 相关的东西。
谢谢
你有几个核心?
该过程的可并行性如何?
问题是 CPU 受限吗?
如果您有多个内核并且可以在它们之间进行并行处理,那么您可能会获得速度提升。除非执行得非常好,否则多线程的开销不会接近 100%,所以这是一个加分项。
另一方面,如果慢速部分受 CPU 限制,那么研究 C 扩展或 Cython 可能会更有成效。与单纯使用multiprocessing
. 显然 100 倍的加速仅适用于翻译后的代码。
但是,说真的,简介。很可能有比这更容易获得的低垂果实。尝试使用线分析器(例如,称为line_profiler
[也称为kernprof
] 的)和内置的 cProfile。