Python 像素(x,y)在一个while循环中开始滞后
我想检查屏幕上的像素何时改变,然后在像素改变颜色时输入键盘事件。但是大约2-4分钟后,当多次调用Python 像素(x,y)在一个while循环中开始滞后,python,pyautogui,Python,Pyautogui,我想检查屏幕上的像素何时改变,然后在像素改变颜色时输入键盘事件。但是大约2-4分钟后,当多次调用pyautogui.pixel()时,计算机速度会减慢 这是我的密码 import pyautogui OldC1 = None while True: NewC1 = pyautogui.pixel(750, 550) if NewC1 != OldC1: pyautogui.press('up') OldC1 = NewC1; 有没有办法克服这种滞后?我也遇
pyautogui.pixel()
时,计算机速度会减慢
这是我的密码
import pyautogui
OldC1 = None
while True:
NewC1 = pyautogui.pixel(750, 550)
if NewC1 != OldC1:
pyautogui.press('up')
OldC1 = NewC1;
有没有办法克服这种滞后?我也遇到过类似的问题,我绕过这个问题的方法是直接使用PIL的函数,而不是pyautogui的包装函数:
from PIL import ImageGrab
pixelRGB = ImageGrab.grab().getpixel((x, y))
使用此函数并没有降低我的电脑速度。我遇到过类似的问题,我绕过该问题的方法是直接使用PIL函数,而不是pyautogui的包装函数:
from PIL import ImageGrab
pixelRGB = ImageGrab.grab().getpixel((x, y))
使用此函数不会降低我的电脑速度。问题不在于用于获取值的函数太多,而在于始终连续运行的无限循环 如果不需要时间精度,那么我建议通过类似于
sleep()
试试看:
从PIL导入ImageGrab
导入时间
OldC1=(0,0,0)
尽管如此:
时间。睡眠(.3)
NewC1=ImageGrab.grab().getpixel((750550))
如果NewC1!=OldC1:
pyautogui.press('up')
OldC1=NewC1
time.sleep(2)
将减少迭代的频率,从长远来看,这将带来更好的性能
编辑:
我没有使用pyautogui
的像素函数来获取特定像素的RGB值,而是使用PIL
(Python图像库)模块中的getpixel()
,原因是pyautogui.pixel()
函数只是ImageGrab.grab().getpixel()的包装,由于我们正在努力提高性能,我们应该直接使用getpixel()
,以提高性能
PS:
pyautogui.pixel()
对像素查找总数有一个限制,大约在10000左右。这可能会导致不正确的结果,如果查找值超过10000,PIL
的getpixel()
没有此阈值 问题不在于用于获取值的函数,而在于始终连续运行的无限循环
如果不需要时间精度,那么我建议通过类似于sleep()
试试看:
从PIL导入ImageGrab
导入时间
OldC1=(0,0,0)
尽管如此:
时间。睡眠(.3)
NewC1=ImageGrab.grab().getpixel((750550))
如果NewC1!=OldC1:
pyautogui.press('up')
OldC1=NewC1
time.sleep(2)
将减少迭代的频率,从长远来看,这将带来更好的性能
编辑:
我没有使用pyautogui
的像素函数来获取特定像素的RGB值,而是使用PIL
(Python图像库)模块中的getpixel()
,原因是pyautogui.pixel()
函数只是ImageGrab.grab().getpixel()的包装,由于我们正在努力提高性能,我们应该直接使用getpixel()
,以提高性能
PS:
pyautogui.pixel()
对像素查找总数有一个限制,大约在10000左右。这可能会导致不正确的结果,如果查找值超过10000,PIL
的getpixel()
没有此阈值 他在一个无限循环中使用这个函数,这会减慢他的电脑速度,而不是具体的模块,他通过这个模块获得像素值。我知道这一点,但我的测试结果显示不同。不知为什么,在无限循环中运行pyautogui.pixel()会显著降低我的电脑速度,特别是接近10000次调用的限制,但ImageGrab.grab()根本没有。我让它在超过50k的调用中运行,与我开始测试时没有性能差异。他在一个无限循环中使用这个函数,这会减慢他的电脑,而不是具体的模块,他通过该模块获得像素值。我知道这一点,但我的测试结果显示不同。不知为什么,在无限循环中运行pyautogui.pixel()会显著降低我的电脑速度,特别是接近10000次调用的限制,但ImageGrab.grab()根本没有。我已经让它运行了超过50k的调用,并且与我开始测试时没有任何性能差异。