我有一个非常简单的bash脚本,用于在循环中运行另一个脚本。下面是一个更简单的版本:
#!/usr/bin/env bash
for ((i=1; i<=100; i++))
do
echo "$i"
timeout --foreground -s SIGKILL 30 python parent.py args || echo "Timeout"
done
当然,arg是依赖于i的选项,为了简单起见,我不包括这些选项。 在一些运行之后,我看到以下输出:
42
Timeout
43
Timeout
etc
问题是parent.py在~3秒后非常快地打印出一些结果,然后继续处理一些需要~20秒的内容,但我想通过超时处理的罕见情况除外
还有什么需要让超时生效的吗?我什么也找不到,所以我试着往不同的方向看。我使用了htop命令,并注意到我正在100%(实际上是400%)上工作。我发现了一些可能是问题的原因,但首先让我在parent.py上为您提供更多信息:
# do stuff
python child.py
现在在child.py上:
# do stuff
grandchild1 = SubprocessThread(args)
grandchild2 = SubprocessThread(args)
grandchild1.start()
grandchild2.start()
grandchild1.join()
grandchild2.join()
虽然父母和孩子没有像预期的那样在htop上,但两个孙子都在那里,吃着我的cpu电源。我应该补充一点,根据htop,他们不是僵尸,他们不是在跑步就是在睡觉
有没有关于如何解决这个问题的建议?(理想情况下,无需修改子代中的任何代码,因为它们已经有几百行了,可以单独使用。)
目前没有回答
相关问题 更多 >
编程相关推荐