首页 > 解决方案 > 在python进程的后台线程中从队列中提取数据

问题描述

假设您正在处理这样的实时数据流:

async_loading_of_queued_data_in_python_process

在主逻辑可以在无限循环Thread中更新变量的背景下,最好的方法是什么?datado_some_logic

我有一些使用明确的并行化起点和终点的经验multiprocessing/multithreading,但我不确定如何连续执行后台线程更新内部变量。任何建议都会有所帮助 - 谢谢!

标签: pythonpandasmultithreadingasynchronousqueue

解决方案


编写更新函数并定期运行后台线程。

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 绑定任务将上下文切换到应用程序的不同部分。

如果这不符合您的要求,请查看多处理- 具体而言,如何旋转新进程以及如何在进程之间共享变量


推荐阅读