停止没有预设退出条件的无限循环
stopping an infinite loop with no preset exit condition
好的,所以下面的脚本将在 RPI3 上 运行 以监控网络速度。
我需要一种方法来停止无限循环而不中断每个循环的过程。
截至目前,脚本不会在程序终止之前退出循环。这是一个大问题,因为我需要用 workbook.close()
函数保存它。
解决这个问题的另一种方法是只关闭每个循环的文件,但只要我知道,您不能使用 xlsxwriter
编辑 xlsx 文件。只写新...
import xlsxwriter
import pyspeedtest
import time
workbook = xlsxwriter.Workbook('data.xlsx')
worksheet = workbook.add_worksheet()
st = pyspeedtest.SpeedTest()
def testspeed():
ping = st.ping()
upload = st.upload()
download = st.download()
return ping, upload, download
n = 1
while True:
p, u, d = testspeed()
worksheet.write(n, 0, p)
worksheet.write(n, 1, u)
worksheet.write(n, 2, d)
n += 1
time.sleep(3600)
#Some user input to break the loop
#but not hinder the process
workbook.close()
ps : 如果有人能把标题编辑成合适的东西,我会 非常 高兴....
如果您的程序 运行 在控制台的前台,您可以使用 Control-C 中断进程. contextlib.closing
在这种情况下提供了一种方便的清理方法:
with contextlib.closing(xlsxwriter.Workbook('data.xlsx')) as workbook:
worksheet = workbook.add_worksheet()
st = pyspeedtest.SpeedTest()
n = 1
while True:
p, u, d = testspeed()
worksheet.write(n, 0, p)
worksheet.write(n, 1, u)
worksheet.write(n, 2, d)
n += 1
time.sleep(3600)
# Just press Control-C when you get tired of waiting,
# workbook.close() will be called automatically
好的,所以下面的脚本将在 RPI3 上 运行 以监控网络速度。
我需要一种方法来停止无限循环而不中断每个循环的过程。
截至目前,脚本不会在程序终止之前退出循环。这是一个大问题,因为我需要用 workbook.close()
函数保存它。
解决这个问题的另一种方法是只关闭每个循环的文件,但只要我知道,您不能使用 xlsxwriter
编辑 xlsx 文件。只写新...
import xlsxwriter
import pyspeedtest
import time
workbook = xlsxwriter.Workbook('data.xlsx')
worksheet = workbook.add_worksheet()
st = pyspeedtest.SpeedTest()
def testspeed():
ping = st.ping()
upload = st.upload()
download = st.download()
return ping, upload, download
n = 1
while True:
p, u, d = testspeed()
worksheet.write(n, 0, p)
worksheet.write(n, 1, u)
worksheet.write(n, 2, d)
n += 1
time.sleep(3600)
#Some user input to break the loop
#but not hinder the process
workbook.close()
ps : 如果有人能把标题编辑成合适的东西,我会 非常 高兴....
如果您的程序 运行 在控制台的前台,您可以使用 Control-C 中断进程. contextlib.closing
在这种情况下提供了一种方便的清理方法:
with contextlib.closing(xlsxwriter.Workbook('data.xlsx')) as workbook:
worksheet = workbook.add_worksheet()
st = pyspeedtest.SpeedTest()
n = 1
while True:
p, u, d = testspeed()
worksheet.write(n, 0, p)
worksheet.write(n, 1, u)
worksheet.write(n, 2, d)
n += 1
time.sleep(3600)
# Just press Control-C when you get tired of waiting,
# workbook.close() will be called automatically