As your process is background, and uses 100% CPU it seem that the process is cpu bound. It is background so user bound would not be expected, so the only alternative would be IO bound. If your process should not really do interesting IO, the script itself would be expected to be CPU bound, and not just buggy.
Processes will always try to go as fast as possible. If they are IO bound, they will use 100% IO, if they are CPU bound, they will try to use 100% CPU. Properly written process schedulers automatically aim to provide a sense of fairness to all processes, meaning that the bigger processes get lower priority. You can further lower the priority with nice. The fact that the cpu usage is still about 100% means that there are no other processes which are currently CPU bound, but are most likely waiting for input from the network.