python - 用于从不同来源获取数据的 Python 异步或多线程?
问题描述
我有一个 Python 应用程序需要从 2-3 个不同的源(SQL Server、MongoDB 等)获取数据,它可以并行完成,因为我稍后只需将所有数据放在一起,并且每个请求不依赖在其他人身上。
我不知道哪种情况更适合这种情况 - 线程、进程或异步等待?
我读到差异主要在于 CPU 使用率和 I/O。但是,如果我只想同时(而不是按顺序)发出多个请求怎么办?当然,这里根本没有 CPU 使用率。
解决方案
我建议你看看python的内置线程模块......
...来自文档的引用:
CPython 实现细节:在 CPython 中,由于全局解释器锁,只有一个线程可以一次执行 Python 代码(即使某些面向性能的库可能会克服这个限制)。如果您希望您的应用程序更好地利用多核机器的计算资源,建议您使用 multiprocessing 或 concurrent.futures.ProcessPoolExecutor。但是,如果您想同时运行多个 I/O 密集型任务,线程仍然是一个合适的模型。
简而言之...多线程存在GIL
(例如全局解释器锁定)的问题,但是您可以在此处阅读...
...执行 I/O 时始终释放 GIL。
推荐阅读
- python - Python 3 请求错误
- scrapy - Scrapy:如何在 sitemap_rules 中调用函数?
- flutter - 为什么'await' 无法在 Dart 中提供带有 built_value 的结果?
- c# - Swagger - 如何显示更复杂的响应示例 - ASP.net Core Web API
- c# - 如果所有字母都是数字,C# String to Double
- c# - Azure Function Apps - 使用登录用户的凭据来读取/更新 Azure 资源
- excel - 从文本文件填充多个 Excel 电子表格
- php - 通过php添加选择数据
- powerapps - 根据 CalendarWeek 显示给定工作日的日期
- javascript - 承诺可以在 Javascript 中乱序执行吗?