Search code examples
pythonclickmousepyautogui

python - fastest way to click mouse


I'm trying to make an auto click bot in python using pyautogui but this takes too much time (it runs in a loop, and xPos/yPos changes every time). What faster ways are there? Thanks for helping.

pyautogui.PAUSE = 0.001
pyautogui.click(xPos,yPos,button = 'left')

Solution

  • I'm testing three library: Pyautogui, Mouse and Pynput. Links to libs:

    Below code and result:

    PYAUTOGUI version:

    import pyautogui
    def click_pyautogui(x, y, button):
        pyautogui.moveTo(x, y)
        pyautogui.click(button=button)
    

    MOUSE version:

    import mouse
    def click_mouse(x, y, button):
        mouse.move(x, y, absolute=True)
        mouse.click(button=button)
    

    PYNPUT version:

    from pynput.mouse import Button, Controller
    def click_pynput(x, y, button):
        mouse = Controller()
        mouse.position = (x, y)
        button = Button.left if button=='left' else Button.right
        mouse.click(Button.left)
    

    wrapper:

    def click(x, y, button):
        # pyautogui
        # click_pyautogui(x, y, button)
    
        # mouse
        # click_mouse(x, y, button)
    
        # pynput
        click_pynput(x, y, button)
    
    import timeit
    if __name__ == '__main__':
        print(timeit.timeit("click(random.randrange(100), random.randrange(100), 'left')", number=100, globals=locals()))
    

    RESULTS time for 100 cycles (average of 3, very small variations):

    • Pyautogui: 22.07 sec
    • Mouse : 0.16 sec
    • Pynput : 0.20 sec

    Mouse look as fastest library!