Alright. Look at what you are doing here:
cwords=product(charset,repeat=length)
cwords=list(cwords)
product creates a generator, which is fine. But right after you turn it into a list, forcing it to calculate all of the words and holding them in memory at once. And these are a lot.
You can get the number of words by using some math knowledge about the size of the cartesian product instead of producing every word beforehand in order to count them.
--------------------------------------
Edit: I looked it up and yes, it seems processes are not affected by the GIL. Yet, you should still measure the time, because processes are more heavyweight and it might be that the gain of speed is not enough to make up for the computing you need to manage the processes.