【发布时间】:2023-03-06 23:17:02
【问题描述】:
我有一个 python 脚本,它从一个 API 收集 10,000 个“人”,然后继续请求另外两个 API 收集有关他们的更多数据,然后将信息保存到本地数据库,大约需要 0.9 秒每人。
所以目前需要很长时间才能完成。多线程有助于加快速度吗?我在本地尝试了一个多线程测试,速度较慢,但这个测试只是一个简单的函数,没有任何 API 交互或任何与 web/disk 相关的内容。
谢谢
【问题讨论】:
-
你在说什么 API?
-
假设 API 访问远程服务器或“慢”本地资源(如磁盘绑定数据库),并且假设您的客户端本身有空闲资源,并发可能是解决问题的方法去吧。
-
你应该查找python GIL(全局解释器锁)。我还没有测试自己的性能,但我希望 Python 脚本的性能不会因为添加更多线程而有太大提高。 I/O 绑定线程将比计算绑定线程做得更好 - 因此,如果您的脚本主要是 IO 绑定,那么添加线程很可能会提高其性能。对于计算绑定脚本,多处理会做得更好——在几个进程中运行脚本,每个进程都做一些工作。
标签: python multithreading