You may use a number of external players through pipes.
However, you will nearly always experience a loss of speed.
There is also a problem with playback control.
I recommend you pyaudio, it works fine.
If you want to play compressed files as well, I'll be so free to point you to my module decoder.py. You can find it on PyPI.
It also uses subprocess, but calls decoders instead of players.
They do not use a lot of CPU, and some of them know how to use hardware acceleration. You can then use pyaudio or something to output the raw audio data. If you want, you can even use pygame by utilizing pygame.sndarray. In that way you can play more formats than pygame supports.
I tried decoder.py in PyQT GUI environment, with pyaudio and also using aplay as an external player. That was on Raspberry Pi B.
Results were pretty satisfying in both cases.
The simplicity can be questioned.
decoder.py itself is very simple, but you have to combine it with other libs and that increases code lines.
There is an example on how to play files included with decoder.py.