利用窗口破折号并行处理的最佳方法是什么?



我有一个基于plot dash的仪表板。仪表板实时更新,并包含大量独立文件的处理。例如,仪表板中有五个不同的时间序列,它们可以单独并行更新,因为它们彼此完全独立。

我在一台windows机器上本地托管仪表板。根据dash plot论坛上的评论,实现并行处理的最佳方式似乎是使用像waitress或芹菜这样的工作线索。

利用并行处理的最佳工具是什么?

有三个选项:

  • 服务员

  • 芹菜
  • 线程

;我建议使用Celery,下面是一个小示例。

您列出的工具用于略微不同的目的,

  • Waitress是一个WSGI服务器,也就是说,它可以用来服务Dash应用程序,或者更具体地说,是底层的Flask服务器

  • Threading是一个在Python中构建线程程序的库

  • Celery为分布式任务队列

也就是说,上面所有的工具都提供了一些与Dash并发处理相关的功能,

  • 您可以通过配置WSGI服务器(可以是Waitress,尽管gunicorn是一个更流行的选择)来启用并发执行回调

  • 在回调中,您可以使用Threading库将计算的重要部分旋转到单独的线程中

  • 你可以使用Celery来做(异步)繁重的工作

第一个选项将加快你的应用程序,如果你有许多独立的回调运行(因为它们将并行运行)。如果你有几个缓慢的回调(即它们的执行时间是几秒钟),一个更好的方法是异步完成繁重的工作。虽然选项2和3都支持异步处理,但Celery提供了许多开箱即用的功能。因此,对于您的用例,Celery将是我的首选。作为参考,这里有一个关于如何使用CeleryDash中运行异步作业的小示例。

相关内容

最新更新