gpt4 book ai didi

python - 为什么我的子进程调用需要重新加载页面才能执行?

转载 作者:行者123 更新时间:2023-11-28 19:27:13 24 4
gpt4 key购买 nike

我在 Django 应用程序中有两个单独的 subprocess 调用,每个都在不同的 View 中。首先调用dcraw图片转换工具,将上传的raw图片转为tiff。 (.tiff 输出通常是输入的九倍,例如 8mb 图像产生 72mb tiff。)

pdcraw = subprocess.Popen(dcraw_args, stdout=None, stderr=None)
pdcraw.communicate()

我的第二个子进程调用一个 matlab 脚本来处理 tiff 并输出相关的数据文件和图像。当我自己运行脚本时,这个调用通常需要 15-20 秒。

result = subprocess.Popen(matlab_args, stdout=None, stderr=None)
result.communicate()

我的问题:对于这两个子进程调用,我必须手动重新加载 View 才能真正运行。 “围绕”它们的其余代码运行良好。关于如何避免这种情况的任何想法?我想知道这是否是某种缓存问题,因为我已经能够让第一个子进程在开始需要重新加载之前运行几次。非常感谢您的见解!先感谢您。

我尝试过的事情:

  • 在子进程周围插入 time.sleep,认为它可能被缩短了。不起作用。
  • stdout 使用管道而不是 None。我认为我应该使用 None,因为我不需要从命令中读取结果(它们只是将图像输出到 args 中指定的目录)。
  • 咒骂它。仍在进行中。

最佳答案

因为子进程的整个概念是异步的,所以当您的 View 被解析到浏览器时它不会就绪。

也许您发出 Ajax 请求来检查进度状态,一旦文件可用,服务器就会发送它们。

或者您使用 WebSockets,它可以在数据可用时立即发送任何数据,无需额外请求,同时保证超快速响应。

关于python - 为什么我的子进程调用需要重新加载页面才能执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7289741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com