用于运行异步请求的 Python Celery 与线程库 [关闭]

2024-04-12

我正在运行一个解析大量数据的 python 方法。由于它是时间密集型的,我想在单独的线程上异步运行它,以便用户仍然可以访问网站/UI。

如果用户退出站点,使用“from threading import thread”模块的线程是否会终止,还是继续在服务器上运行?

对于这样的事情,使用 Celery 与简单地使用线程模块相比有什么优势?


由于(臭名昭著)的原因,Python 解释器绝对是单线程的全局解释器锁 https://realpython.com/python-gil/又名(吉尔)。因此,Python 中的线程仅在计算和 IO 可以同时发生时提供并行性。计算绑定任务从 Python 线程模型中的线程中看不到什么好处,至少在 CPython 2 或 3 下是这样。

另一方面,这些限制不适用于多重处理,而这正是您将使用像 celery 这样的排队系统所做的事情。您可以运行多个 Python 工作实例,这些实例可以在多核计算机或多台计算机上同时执行。

如果我理解你的场景 - 网站上的交互启动了一项长期运行的工作 - 排队几乎肯定是可行的方法。您可以获得真正的并行性,并且可以轻松选择将处理转移到其他机器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于运行异步请求的 Python Celery 与线程库 [关闭] 的相关文章

随机推荐