我有一个python脚本,它从API中收集10,000个'人',然后继续请求另外两个API来收集有关它们的更多数据,然后将信息保存到本地数据库,大约需要0.9秒每个人。
所以目前需要很长时间才能完成。多线程会有助于加快速度吗?我在本地尝试了多线程测试并且速度较慢,但是这个测试只是一个简单的函数,没有任何API交互或任何与Web /磁盘相关的内容。
感谢
答案 0 :(得分:0)
你有几个核心?
流程的并行化程度如何?
问题是CPU绑定了吗?
如果你有多个内核并且可以在它们之间进行并行化,那么你可能会获得速度提升。除非实施得太多,否则多线程的开销几乎不是100%,所以这是一个加分。
另一方面,如果慢速部分是CPU绑定的,那么查看C扩展或Cython可能会更有成效。这两个有时可以提供100倍的加速(有时更多,通常更少,取决于代码的数字),比使用multiprocessing
的幼稚使用要少2倍的加速。显然,100倍加速仅适用于已翻译的代码。
但是,严肃地说,简介。有可能是低悬的水果,比任何一个都容易获得。尝试使用行分析器(例如,名为line_profiler
[也称为kernprof
]的)和内置cProfile。