首页 > 编程问答 >将基于系统时间的循环系统更改为简单的 time.sleep()

将基于系统时间的循环系统更改为简单的 time.sleep()

时间:2024-07-29 13:16:50浏览次数:6  
标签:python loops

所以我试图修改我见过的游戏代码......这只是一个较大代码的片段。不过我发现很有趣,这段代码使用 OCR,它会截取屏幕截图并上传一般概述,以与 Webhooks 的使用不一致。我发现它使用的系统是通过读取我的系统(计算机)时间...我想将其更改为一种更简单的方法来创建一个循环来每“x”分钟执行这一部分。它读取系统时间,每次包含 300、301、302、303 或 304 时,它都会执行该函数。我在将其更改为简单的 time.sleep() 函数时遇到了一些麻烦。我不知道它是否与影响代码的其余部分有关,但这是代码片段:

    #IF LOGS ARE OPEN CHECK SYSTEM TIME, IF SYSTIME = THESE TIMES PERFORM LOG OVERVIEW
    if tribe:
        #EG 950 = 9m:50s
        if str(300) in str_time or str(301) in str_time\
                or str(302) in str_time or str(303) in str_time\
                or str(304) in str_time:
            ScreenGrab()
        #CAN ADD A PRECHECK TO DETERMINE WHERE WE ARE ON THE ARK MENU (RECONNECT)
        findcompare(im)
        compare(im, roles)

        #DELAY BETWEEN SCANS
        time.sleep(1.9)
        return

有人看到我错过的任何明显的更改需要进行吗?感谢任何帮助。

我尝试将其更改为以下内容,但似乎将冷却时间应用于代码的相当不同的部分。

    #IF LOGS ARE OPEN CHECK SYSTEM TIME, IF SYSTIME = THESE TIMES PERFORM LOG OVERVIEW
    if tribe:
        #EG 950 = 9m:50s
        time.sleep(60)
        ScreenGrab()
        #CAN ADD A PRECHECK TO DETERMINE WHERE WE ARE ON THE ARK MENU (RECONNECT)
        findcompare(im)
        compare(im, roles)

        #DELAY BETWEEN SCANS
        time.sleep(1.9)
        return

这似乎是获得冷却时间的内容:

def startup():
    checkRunning()

    #GETS SYSTEM TIME FOR USE IN LOG OVERVIEW
    timestamp = time.time()
    date_time = datetime.fromtimestamp(timestamp)
    str_time = date_time.strftime("%M%S")

    #TAKES SCREENSHOT OF ARK (REGARDLESS OF IF THE WINDOW IS ACTIVE OR NOT)
    try:
            logger.info("Taking SS")

另外,它也是由于某种原因发送 2 个快速更新而不是 1 个:

def LogHook():
    if "https" in log_urls:
        try:
            #SETS THE WEBHOOK/MESSAGE
            content = (f"**Quick Update** - {who}")

            #SENDS THE REPORT TO DISCORD WEBHOOK
            webhook = DiscordWebhook(url=log_urls, content=content)
            with open("Log Update.png", "rb") as f:
                webhook.add_file(file=f.read(), filename='Log Update.jpg')
                webhook.execute()
            logger.debug("Overview Updated")
            endoffunc()
        except Exception as e:
            logger.error(f"Log Overview Failed", e)

如果这是无法理解的,我可以共享其余的代码,但我不想让帖子充满可能不必要的代码。


当然,我可以帮助解决这个问题。是对的,根据特定系统时间检查循环不是理想的选择。 time.sleep() 是一个更好的方法。

看起来问题在于如何获取和使用 str_time 。似乎在一个单独的函数 startup() 中获得了它,但我怀疑这个函数没有像期望的那样经常被调用。

以下是如何使用 time.sleep() 重构代码以实现的目标:

import time

def startup():
    # ... 的其他启动代码 ...

def main_loop():
    while True:  # 这将创建一个无限循环
        if tribe:
            ScreenGrab()
            # ... 的其他处理代码 ...

        time.sleep(60)  # 等待 60 秒(1 分钟)

if __name__ == "__main__":
    startup()
    main_loop()

在这个修改后的代码中:

  1. 我们创建了一个名为 main_loop 的函数,其中包含希望每分钟执行的主要逻辑。
  2. main_loop 内部,我们有一个 while True 循环,该循环将无限期地运行的代码。
  3. 在循环内,我们调用 ScreenGrab() 和的其他处理函数。
  4. 然后, time.sleep(60) 会使循环暂停 60 秒,然后再重新开始。

关于双重更新问题:

没有提供调用 LogHook() 函数的代码部分。但是,双重更新问题很可能是由于在短时间内两次调用 LogHook() 引起的。要对此进行调试,请尝试在调用 LogHook() 函数之前和之后添加日志语句,并查看日志以了解它被调用的频率和位置。

如果能共享更多有关 startup() 函数如何以及在何处被调用的上下文信息,以及调用 LogHook() 的代码部分,我或许可以提供更具体的帮助。

标签:python,loops
From: 78805475

相关文章

  • 为什么Python要对引用非容器类型的类型实现循环GC
    检查文档:支持循环垃圾收集Python对检测和收集涉及循环引用的垃圾的支持需要对象类型的支持,这些对象类型是其他对象的“容器”,这些对象也可能是容器不存储对其他对象的引用或仅存储对原子类型(例如数字或字符串)的引用的类型不需要为垃圾收集提供任何显......
  • 如何在 Visual Studio Code 中降级终端中的 python?
    我有一段代码需要运行,但它仅与tensorflow1.3、1.4和1.5兼容。我想我需要降级python才能运行它,但是终端有python3.10我尝试创建虚拟环境失败,但终端仍然说它正在使用python3.10,所以我仍然无法运行代码有什么我可以做的吗?是对的,创建虚拟环境是运行不同Python版本代......
  • python-小李帮老师改错(赛氪OJ)
    [题目描述]老师给小理发了一封电子邮件,任务如下。写一个程序,给你 n 个数,输出 X。X=num1p1​​+num2p2​​+⋯+numnpn​​。                 num1​,num2​,⋯⋯,numn​ 都是整数,p1​,p2​,⋯⋯pn​ 都是一位数。但是出现了一些玄学错误,......
  • 保护从 py2exe python 生成的二进制文件
    我的项目需要将我的python文件转换为py2exe。公平地说,我的py2exe正在工作。假设我的二进制文件名为“test.exe”。我知道我的test.exe包含我的python文件的所有pyc文件。我想要做的是,保护我的text.exe,这样我的源代码就不会被看到,换句话说,我不希望它被反编译回来,我该怎......
  • python 将数字前面的字符替换为数字后面的新字符
    我有一些字符串看起来像:*.rem.1.gz和*.rem.2.gz我想将其替换为*.1.trim.gz和*.2.trim.gz1号文件和2号文件相互配对,我想创建一个单独的字符串来同时包含这两个文件。importosallfiles=os.listdirpair=[x.replace("rem.(\d+)","(\d+).trim")forxinall......
  • 使用python打开UNC文件
    如何使用python通过路径打开网络计算机上的文件?我当前正在使用os.startfile但随后出现错误winerror2:无法打开文件。文件路径是正确的,我可以通过win+R打开该文件。感谢您提供的任何帮助。importwin32wnetimportosdefopen_unc_path(unc_path,usern......
  • Python环境:深入理解与构建实践
    Python环境:深入理解与构建实践在当今的软件开发领域中,Python以其简洁的语法、丰富的库支持和广泛的应用场景,成为了众多开发者、数据科学家、机器学习工程师及自动化测试人员的首选语言。然而,要高效地使用Python进行项目开发,深入理解并合理构建Python环境是至关重要的。本文......
  • 界面自动化测试录制工具,让python selenium自动化测试脚本开发更加方便
    自动化测试中,QTP和seleniumIDE都支持浏览器录制与回放功能,简单的来说就像一个记录操作步骤的机器人,可以按照记录的步骤重新执行一遍,这就是脚本录制。个人觉得传统录制工具有些弊端,加上要定制支持我自己的自动化框架(python单机版自动化测试框架源代码),所以自己用javascript写了一个......
  • Python 面试常问问题及应用场景解析
    引言随着Python在数据科学、Web开发、自动化脚本、机器学习等领域中的广泛应用,越来越多的公司开始寻找具备Python技能的人才。因此,在Python面试中,面试官通常会通过一系列问题来评估应聘者的编程基础、问题解决能力和对Python特性的理解程度。本文将涵盖Python面试中最常见的......
  • python 虚拟环境
    python虚拟环境Python的venv模块允许你创建轻量级的“虚拟环境”,这些环境是独立的Python安装,用于项目的依赖隔离。每个虚拟环境都有自己的Python解释器、库和脚本,与系统中安装的Python相互隔离。这意呀着,你可以在一个项目中安装特定版本的库,而不会影响到系统上其他Pyt......