

狼辛 解决方案也挺好的,就是看着不够明显,不利于学习
主要还是解决并发阻塞问题,原并发阻塞不是真正的并发,写错了一个小细节,把解决方案共享
注意:不论何种解决方案,都会出现一个问题,在阻塞时实际上界面还会变化,导致运行失败,90%加入报错,从头再来,就好了
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import time
from datetime import datetime
from . import process7 # 判断验证码是否出现
from . import process4 # 处理验证码
def start_slider_monitor():
"""
后台线程:持续监听是否出现验证码
"""
def _monitor():
while True:
try:
# 判断是否出现验证码
process7.main({})
if glv.get("判断滑块出现"):
print(f"[{datetime.now()}] 检测到验证码,阻塞主流程")
# 阻塞主流程
slider_event.clear()
# 执行验证码处理
process4.main({})
# 验证码处理完成
glv["判断滑块出现"] = False
slider_event.set()
print(f"[{datetime.now()}] 验证码处理完成,恢复主流程")
time.sleep(0.5) # 防止CPU空转
except Exception as e:
print("验证码监听异常:", e)
time.sleep(1)
t = threading.Thread(target=_monitor, daemon=True)
t.start()