On my old laptop with an i5 processor, running on a single thread, a recent version of Stockfish (written in CPP) makes around 1 million nodes per second (1Mnps). You must take into account that these nodes are not just the move generator, but the engine is also using its evaluation, so Stockfish's move generator should be much faster than that
My very simple chess engine (written in C), whose move generator is not optimized can make around 4.5Mnps also on a single thread (with no evaluation, just the move generator working. This is what in chess programming is called a perft test).
So at first glance something like some thousands of positions per second seems like very poor performance.
Of course part of this poor performance can be due to the language you've chosen to write your engine, but unless you've made a really weird choice, it seems like there's something odd about your program. My educated guess is either the move generator is buggy or its design is (very) sub-optimal.