python - 在python进程的后台线程中从队列中提取数据
问题描述
假设您正在处理这样的实时数据流:
在主逻辑可以在无限循环Thread
中更新变量的背景下,最好的方法是什么?data
do_some_logic
我有一些使用明确的并行化起点和终点的经验multiprocessing/multithreading
,但我不确定如何连续执行后台线程更新内部变量。任何建议都会有所帮助 - 谢谢!
解决方案
编写更新函数并定期运行后台线程。
def update_data(data):
pass
import threading
def my_inline_function(some_args):
# do some stuff
t = threading.Thread(target=update_data, args=some_args)
t.start()
# continue doing stuff
了解GIL的约束,这样您就知道线程是否真的是您需要的。
我建议您查看 async/await 以更好地了解线程的实际工作方式。这是一个类似于 javascript 的模型:您的主程序是单线程的,它利用 IO 绑定任务将上下文切换到应用程序的不同部分。
如果这不符合您的要求,请查看多处理- 具体而言,如何旋转新进程以及如何在进程之间共享变量
推荐阅读
- android - Firebase 实时数据库拒绝访问时如何显示错误?
- r - 将多个文件中的数据合并到R中的单个data.frame中的计算最快方法?
- sql-server - SSMS 导出到 CSV 麻烦
- javascript - 解构不适用于快速中间件中的 req.*
- sql - 在 PostgreSQL 中查找给定日期是营业日期或假期
- assembly - Zynq 7000:从 cpu0 初始化 cpu1 的最小 asm 代码
- java - Java Inflater 抛出 DataFormatException “无效的代码长度集”
- html - Firefox 背景图像在空闲的失焦浏览器选项卡中消失
- python - 在 Python 中执行数组计算的快速方法
- c# - C# Automapper IQueryable - LINQ 2 SQLite - 查询仅返回父级,嵌套子级始终为空