3 回答
TA贡献1966条经验 获得超4个赞
print语句print(IPadress)
在函数中的web请求完成之前执行。这就是打印结果为None
. 如果您在打印前等待几秒钟,它将保存 IP 地址值。
您还可以使用锁定变量来确保仅在请求执行后才读取该变量。
TA贡献1880条经验 获得超4个赞
当您启动线程并希望在继续之前从每个线程中获取结果时,请尝试使用.joinThread 库的方法提供的障碍。因此,与其等待一些您有时可能不确定的恒定时间,不如尝试使用这种方法-
thread = Thread(target = Get_IP)
thread.start()
thread.join()
print(IPadress)
你的问题的整个解决方案可能看起来像 -
def Get_IP():
while True:
try:
data = urlopen(Ip_Url).read()
adresses = data.decode('UTF-8')
global IPadress
IPadress = adressas
print("Your ip is : ", IPadress)
if IPadress: break
except Exception as erroras:
print("Can't connect!", erroras)
time.sleep(5)
sys.exit()
time.sleep(5)
thread = Thread(target = Get_IP)
thread.start()
thread.join()
print(IPadress)
TA贡献1886条经验 获得超2个赞
只需添加一个简单的 time.sleep(),等待几秒钟即可下载字符串,现在它运行良好。
IPadress = None
def Get_IP():
while True:
try:
Ip_Url = 'https://ipecho.net/plain'
data = urlopen(Ip_Url).read()
adressas = data.decode('UTF-8')
global IPadress
IPadress = adressas
#print("Your ip is : ", IPadress)
except Exception as erroras:
print("Can't connect!", erroras)
time.sleep(5)
sys.exit()
time.sleep(5)
Thread(target = Get_IP).start()
time.sleep(0.5)
print(IPadress)
print("Jusu IP:",IPadress)
添加回答
举报