我有一个用 Python 制作的桌面应用程序,带有 PyQT 和 scipy/numpy。 该程序的目的是在给定一些数据的情况下找到微分方程的最佳参数集。
因此,我们使用 numpy 中的数值求解器和优化例程。计算非常简单,但也很快(最多 30 秒),但如果我们使用自定义参数空间探索,可能会变得更长(几个小时)。
下一步是“把它放在云端”,这样用户就不用费心如何安装应用程序了。 因此,我们想要创建一个 Flask 应用程序,并使用 d3.js 或类似的东西进行显示。
我从来没有做过任何 JS,所以我想知道什么是最好的架构:
用户上传他的数据,它们被发送到服务器上,它执行计算并将它们发回 => 我们可以在服务器上使用 scipy/numpy,但是太多的同时连接可能会关闭所有内容。
用户上传他的数据,它们在客户端用 JavaScript 进行处理 => 服务器上不再有问题,但我必须自己发现一种新语言并实现科学计算(我认为这会比 numpy 中的 Fortran 例程长)
使用/学习 JS 并不是真正的问题,如何高效地使用它才是真正的问题。 这是 future 修改(计算时间更长,我们希望提供结果的聚类...)和开发时间的最佳选择。
你会做什么? 谢谢。
最佳答案
考虑两种情况:如果计算是客户端的,那么你的客户端就会被加载,客户端计算机(可能只是手机或其他设备)的计算能力开始发挥作用,这并不重要该网站的其他用户是否正在同时进行计算。
另一方面,如果计算是在服务器端完成的,那么您的服务器就会被加载,单用户情况下的计算时间可能会更小(因为您的服务器可能比普通客户端计算机更强大),但如果您有很多用户同时访问您的服务器,它会急剧下降。
其他方面也发挥作用:
如果您在服务器端执行此操作,则应确保在传输参数或结果的过程中不会泄露私有(private)数据(因此请使用
https
或类似的)。在服务器端执行此操作可以方便以后升级计算能力(可以将任务拆分到多个节点上,以便以更短的计算时间来应对更高的服务器成本)。
如果有适当的缓存机制,在客户端执行此操作甚至可以离线执行。
所以,总而言之,您的问题太宽泛且不明确,无法给出明确的答案。
关于javascript - 我应该在哪里进行大量计算?客户端还是服务器端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22760837/