我在Raspberry Pi上使用Python 2.7。
我运行一个脚本A,这是一个for循环,每隔30秒拍照。通常,对于每次迭代,捕获场景并保存它需要大约5秒钟,然后它会休眠(大约25秒)直到下一次迭代。
经过一段时间后,我运行了一个脚本B,它根据脚本A拍摄的图像来计算内容。所以这两个脚本同时运行。我没有使用子进程或任何东西,只是单独执行两个脚本。
我的问题是:当脚本B运行时,脚本A会减慢很多,所以有时前5秒变成25-30秒,然后一次迭代可以持续40秒或更长时间!
你知道为什么在脚本A中不遵守持续时间,以及我如何解决这个问题?
谢谢:)!
答案 0 :(得分:0)
我相信如果你在Linux环境中,你可以使用nice命令来平衡cpu的使用。例如:
nice --12 script.py
上面的数字表示对cpu很好的数量。它在-20到+19之间。
答案 1 :(得分:0)
2.您还可以在几秒钟内完成脚本的运行时间,您将在执行结束时输出。问题是python programm会在继续之前等待完成的脚本。
import subprocess
import time
counter = 0
script_a_runtime = 0
script_b_runtime = 0
while True:
counter += 1
script_a = 0
script_b = 0
script_a_runtime = int(subprocess.check_output(['scripta']))
if counter >=5:
counter = 0
script_b_runtime = int(subprocess.check_output(['scriptb']))
sleeptime = 30 - script_a_runtime - script_b_runtime
if sleeptime:
time.sleep(sleeptime)
3.Timers
import datetime
import time
import subprocess
script_a_runtime = 0
script_b_runtime = 0
while True:
counter += 1
start_a = datetime.datetime.now()
subprocess.check_output(['script_a'])
finish_a = datetime.datetime.now()
script_a_runtime = finish_a - start_a
if counter >= 5:
counter = 0
start_b = datetime.datetime.now()
subprocess.check_output(['script_b'])
finish_b = datetime.datetime.now()
script_b_runtime = finish_b - start_b
sleeptime = 30 - script_a_runtime.seconds - script_b_runtime.seconds
if sleeptime:
time.sleep(sleeptime)
我认为运行那些并排依赖的脚本是个好主意。此外,如果在应该再次运行scriptA / B之前没有完成,则可能会出现问题。