Python InfiniteTimer 测试代码计算 Failed Loop 失败

问题描述 投票:0回答:1

我正在尝试测试我的 IP 延迟并使用 InfiniteTimer 我刚刚添加了一个failCount全局变量,但是当我尝试增加tick()回调函数时,我收到了一个错误。

文件“C:\Users\ken38\OneDrive\Projects\Python\Pinger\ping_test3.py”,第 17 行,勾选 print("失败次数:" + 失败次数) UnboundLocalError:赋值前引用的局部变量“failCount”

我认为这可能是 InfiniteTimer 位于单独的线程中并且无法看到全局。任何人都可以建议吗?

from InfiniteTimer import InfiniteTimer
from ping3 import ping, verbose_ping
import os

failCount = 0

def tick():
    clear_screen()
    r = ping('1.1.1.1')  # Returns delay in seconds.
    fin = open("data2.txt", "a")
    if(isinstance(r, (int, float))):
        fin.write("%1.2f, \n" % (r * 1000))
    else:
        fin.write("%s, ping failed\n" % r)
        failCount = failCount + 1
    print("%1.2f" % (r *1000))
    print("failCount: " + failCount)
    fin.close()
# Example Usage
#t = InfiniteTimer(0.5, tick)
#t.start()
print('Kat is testing!')

t = InfiniteTimer(1.0, tick)
t.start()

def clear_screen():
    if os.name == 'nt':  # Windows
        os.system('cls')
    else:  # Linux/Unix
        os.system('clear')

python counter persistent
1个回答
0
投票

要访问全局变量,只需在函数内添加一次

def tick():
    global failCount

    ...
    
    failCount = failCount + 1
    ...
© www.soinside.com 2019 - 2024. All rights reserved.