Mac本地VS Code正常运行的定时Python脚本在Parallels中无输出求助
问题原因与解决办法
问题根源
你写的定时判断逻辑time.time() % (60 * 5) == 0存在精度漏洞:
time.time()返回的是带毫秒级小数的时间戳(比如1718123456.789),只有当时间戳的小数部分恰好为0时才会触发条件,这种情况几乎是偶然事件,本地运行时刚好碰上了一次,而Parallels虚拟机里没遇到这个巧合。- 另外,Parallels虚拟机的系统时间和宿主Mac可能存在微小偏差,进一步降低了触发概率。
修复方案
方案1:修正时间戳精度判断
将时间戳转为整数后再取模,避免小数干扰:
import time while True: current_ts = int(time.time()) if current_ts % 300 == 0: print(time.strftime('%H:%M:%S %Y-%m-%d', time.gmtime(current_ts))) time.sleep(1) # 防止同一秒内重复执行 time.sleep(0.5) # 降低CPU占用率
方案2:更高效的休眠式定时
直接计算离下一个5分钟整点的时间,休眠到该时刻再执行任务,比循环轮询更高效:
import time def execute_task(): while True: now = time.time() # 计算距离下一个5分钟整点的秒数 delay = 300 - now % 300 time.sleep(delay) # 执行你的核心代码 print(time.strftime('%H:%M:%S %Y-%m-%d', time.gmtime())) execute_task()
额外检查项
- 先在Parallels的VS Code里运行
print("test"),确认Python环境的输出功能正常。 - 检查Parallels虚拟机的时间同步:打开虚拟机设置→选项→时间同步,确保功能已开启,避免时间偏差导致定时逻辑异常。
内容的提问来源于stack exchange,提问作者user21287046
相关产品推荐
相关产品推荐

