use*_*600 16 python celery python-multithreading django-celery
我正在运行一个解析大量数据的python方法.由于它是时间密集的,我想在一个单独的线程上异步运行它,以便用户仍然可以访问网站/ UI.
如果用户退出站点或继续在服务器上运行,是否使用"来自线程导入线程"模块的线程终止?
使用Celery与仅仅使用线程模块这样的优势有什么好处?
cba*_*are 13
Python线程不是真正的本机操作系统线程.请参阅python中的绿色线程和线程.
并且,由于(in)着名的全局解释器锁定(GIL),Python解释器是坚定的单线程.因此,Python中的线程仅在计算和IO可以同时发生时提供并行性.计算绑定任务将看不到Python线程模型中的线程带来的好处,至少在CPython 2或3下是这样.
另一方面,这些限制不适用于多处理,这是您将使用像芹菜这样的排队系统.您可以运行几个可以在多核计算机或多台计算机上同时执行的Python工作程序实例.
如果我理解你的场景 - 网站上的互动开始了长期的工作 - 排队几乎肯定是要走的路.您可以获得真正的并行性以及将处理转移到其他计算机的简单选项.
| 归档时间: |
|
| 查看次数: |
6182 次 |
| 最近记录: |