在 Python 脚本中,
pyautogui.moveRel(b, a)
的响应时间目前为 0.1 秒。这是该功能的预定时间吗?如果是这样,有什么方法可以使用 python 或其他语言中的另一种技术来缩短响应时间?我的目标响应时间是0.01秒左右,也就是60HZ的速率。
@mertyildiran 获得的结果是预期的,因为 PyAutoGUI 在操作之间有默认的 0.1 秒暂停作为failsafe。
为了加快速度,您可以将暂停设置为较低的值,甚至为零,如下所示:
pyautogui.PAUSE = 0
检查响应时间(以微秒为单位)的代码(0.01 秒 = 10000 微秒):
import pyautogui
import datetime
for x in range(0, 9):
start = datetime.datetime.now()
pyautogui.moveRel(None, 50)
end = datetime.datetime.now()
elapsed_time = end - start
print elapsed_time.microseconds
输出:
269017
112927
113071
113061
112761
112561
113115
112107
112448
这意味着使用这个库和 Python 大约需要 0.1 秒。所以我的建议是使用更深层次的编程语言,比如 C++。
Windows中用C++模拟鼠标事件:https://stackoverflow.com/a/7492837/2104879
Linux下用C++模拟鼠标事件:https://stackoverflow.com/a/8791599/2104879
您可以使用 _pause=False 作为 moveTo 和 moveRel 以及大多数其他 pyautogui 函数的参数来禁用暂停并使移动即时。
示例:
pyautogui.moveTo(x, y, _pause=False)
pyautogui.moveRel(x, y, _pause=False)
mouseDown(_pause=False)