【问题标题】:How to speed up while loop with PyAutoGui?如何使用 PyAutoGui 加速 while 循环?
【发布时间】:2022-01-08 00:48:09
【问题描述】:

我正在为 Discord 制作一个非常简单的垃圾邮件机器人,只是为了恶作剧我的朋友。但是 while True: 命令非常慢。有更快的替代方案吗?

import PIL
import pyautogui, time
time.sleep(5)
pyautogui.FAILSAFE = True
while True:
    pyautogui.hotkey("command", "v")
    pyautogui.press("enter")
    
if (pyautogui.locateOnScreen("av.png")):
    (pyautogui.click(pyautogui.locateCenterOnScreen("av.png")))

【问题讨论】:

  • 如果while true 真的太慢了​​,你真的不能用 Python 来做这件事。不过,问题可能在于您在循环中运行的任何内容的速度。

标签: python pyautogui


【解决方案1】:

来自documentation

就像魔法师的学徒中的魔法扫帚被编程为不断向浴缸注水(然后过度注水)一样,您的程序中的错误可能会使其失控。如果鼠标光标自行移动,则很难使用鼠标关闭程序。

作为一项安全功能,默认情况下会启用故障安全功能。当调用 PyAutoGUI 函数时,如果鼠标位于主监视器的四个角中的任何一个,它们将引发 pyautogui.FailSafeException。调用每个 PyAutoGUI 函数后会有十分之一秒的延迟,让用户有时间将鼠标撞到角落以触发故障保护。

您可以通过设置 pyautogui.FAILSAFE = False 来禁用此故障保护。我强烈建议您不要禁用故障安全。

10 秒延迟由 pyautogui.PAUSE 设置设置,默认为 0.1。您可以更改此值。还有一个 pyautogui.DARWIN_CATCH_UP_TIME 设置,它在键盘和鼠标事件之后在 macOS 上增加了额外的延迟,因为在 PyAutoGUI 发出这些事件之后操作系统似乎需要延迟。默认设置为 0.01,增加了额外的百分之一秒延迟。

因此,如果你想“加速”你的循环,你可以减少pyautogui.PAUSE 的值。但是,请记住,这将阻止您在需要时激活故障保险。

【讨论】:

    猜你喜欢
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多