我正在尝试测试我的 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')
要访问全局变量,只需在函数内添加一次
def tick():
global failCount
...
failCount = failCount + 1
...