在没有预设退出条件的情况下停止无限循环

时间:2018-03-26 00:12:35

标签: python xlsxwriter

好的,所以下面的脚本将在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()



如果有人可以将标题编辑为适合的东西,那么它会让我非常高兴。

1 个答案:

答案 0 :(得分:3)

如果您的程序在控制台的前台运行,则可以使用 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