【问题标题】:Where should I make heavy computations ? Client or server side?我应该在哪里进行繁重的计算?客户端还是服务器端?
【发布时间】:2014-05-10 17:57:57
【问题描述】:

我有一个桌面应用程序,用 Python 制作,带有 PyQT 和 scipy / numpy。 该程序的目的是在给定一些数据的情况下找到微分方程的最佳参数集。

因此,我们使用来自 numpy 的数值求解器和优化例程。计算非常繁琐,但也很快(最多 30 秒),但如果我们使用自定义参数空间探索,可能会变得更长(几个小时)。

下一步是“把它放在云端”,这样用户就不必费心如何安装应用程序了。 因此,我们想创建一个 Flask 应用程序,使用 d3.js 或类似的东西进行显示。

我从来没有做过任何 JS,所以我想知道什么是最好的架构:

  • 用户上传他的数据,它们在服务器上发送,它执行计算并将它们发送回去 => 我们可以在服务器上使用 scipy / numpy,但是同时连接太多会关闭一切。

  • 用户上传他的数据,它们在客户端用 JavaScript 处理 => 在服务器上没有更多问题,但我必须自己发现一种新语言并实现科学计算(我认为它会比 numpy 的 Fortran 例程更长)

使用/学习 JS 并不是真正的问题,使用它的效率问题更大。 对于未来的修改(计算时间更长,我们希望提供结果的聚类...)和开发时间,这是最佳选择。

你会怎么做? 谢谢。

【问题讨论】:

    标签: javascript python web-applications numpy


    【解决方案1】:

    考虑这两种情况:如果计算是客户端的,那么您的客户端会被加载,客户端计算机(可能只是手机或其他任何东西)的计算能力会发挥作用,这并不重要网站的其他用户是否同时进行计算。

    另一方面,如果计算是在服务器端完成的,那么你的服务器会被加载,单用户情况下的计算时间可能会更短(因为你的服务器可能比普通客户端计算机更强大),但如果您有很多用户同时访问您的服务器,它会急剧下降。

    其他方面发挥作用:

    • 如果你在服务器端做,你应该确保在传输参数或结果的过程中不会泄露私人数据(所以使用https或类似的)。

    • 在服务器端执行此操作允许以后升级计算能力(可能将任务拆分到多个节点上,以缩短计算时间以提高服务器成本)。

    • 如果有适当的缓存机制,在客户端执行它甚至可以离线执行。

    因此,总而言之,您的问题过于宽泛且未详细说明,无法给出明确的答案。

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 1970-01-01
      • 2017-05-17
      • 2022-06-25
      • 1970-01-01
      • 2011-12-06
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多