First of all you should never load an image more than once. As you have it here, you are loading the images every event, This is a big NO NO in gaming or in any GUI. You should never have a resource load within the while loop. In addition to that it is a massive bottleneck you have created. Which is why it slows down. This has nothing to do with python/pygame this is just straight GUI and gaming. So if you move on to another language the same rule applies.
Second of all... pygame supports basic cursor change
https://www.pygame.org/docs/ref/cursors.html
If you want complex or an image in place of your cursor, you load the image and center the image to the cursor position. Then you make the actual cursor disappear. Not sure how you are doing it as you dont show the whole code. But just figured i would add that.
mekire has an example here. Press the number keys to change to the various mouse cursors.
Second of all... pygame supports basic cursor change
https://www.pygame.org/docs/ref/cursors.html
If you want complex or an image in place of your cursor, you load the image and center the image to the cursor position. Then you make the actual cursor disappear. Not sure how you are doing it as you dont show the whole code. But just figured i would add that.
mekire has an example here. Press the number keys to change to the various mouse cursors.
Recommended Tutorials: