I was unable to kill my python sub process because I had set the shell=True option in the process.Popen command. I removed shell=True and then I could kill it.
If the subprocess is a shell, then you will have to kill the things it is running before the shell will end itself.