我有一个Python脚本,可以自动检查互联网连接,并且如果互联网发生故障,应该重启wifi连接。
这是执行此操作的功能:
def RestartWifi():
print 'Restarting Wifi.'
os.system('sudo ifdown --force wlan0')
time.sleep(6)
os.system('sudo ifup wlan0')
我已经添加了sleep命令,以确保在重新启用连接之前有足够的时间来禁用。
然而,有没有办法加快速度,并在禁用后以某种方式启用无线网络?另外,如果第一个命令花费的时间超过6秒,会发生什么? 有没有办法等待命令返回'就像它完成时的功能一样?
非常感谢你的帮助!
答案 0 :(得分:0)
您可以这样做的一种方法是让syscall阻止它完成。这样你就不需要等到严格必要了。一种方法是确保调用块与
一致subprocess.check_output()
命令。
答案 1 :(得分:0)
回答我自己的问题,I found out os.system()以进程返回代码响应。这确实表明,该函数仅在被调用的子流程完成后返回。
因此,我试图解决的问题似乎根本不是问题,我应该能够消除睡眠时间。
然而,确实有一个(非常)短暂的延迟,就像一个预防措施和“让事情解决”,可以这么说。在大多数情况下,这一秒不应该是一个问题。def RestartWifi():
os.system('sudo ifdown --force wlan0')
time.sleep(1)
os.system('sudo ifup wlan0')