I don’t know py but from what I read you should have a counter for how many times minmax is called.
Explanation:
You have a depth and you check the depth, and that’s certainly the most important, but when there are a lot of possible moves maybe that’s killing him.
So you could try and follow only the first 10 possible moves. Just to test my hypothesis. Later you can find a better way.