Python multiprocessing starts processes, but only one is active
<p>I got the following code from the accepted answer in the following question.  When I run it up on my windows 10 x64bit machine, in Python 3.5.1 it starts the threads but only one of them shows any CPU usage, and it is very little at that.  While this is happening the terminal is scrolling up numbers from the print statement so it is running... When I run other python scripts that use loops I see 13.5% CPU usage for the script.  I expected to see this spin up 4 threads each with 13.5% CPU usage.
I am running the script via windows command prompt and and these are the only 5 python processes running.  When I exist the script by pressing Ctrl+C all the processes stop.</p>

<p>Why is this not working as expected?</p>

<p><a href="https://i.stack.imgur.com/1cRvq.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/1cRvq.png" alt="enter image description here"></a></p>

<p>Question:
<a href="https://stackoverflow.com/questions/10262138/how-do-i-multi-process-the-itertools-product-module">How do I &quot;multi-process&quot; the itertools product module?</a></p>

<p>Code From Accepted Answer:</p>

<pre><code>#!/usr/bin/env python3.5
import sys, itertools, multiprocessing, functools


alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12234567890!@#$%^&amp;*?,()-=+[]/;"
num_parts = 4
part_size = len(alphabet) // num_parts

def do_job(first_bits):
    for x in itertools.product(first_bits, alphabet, alphabet, alphabet):
        print(x)

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=4)
    results = []
    for i in range(num_parts):
        if i == num_parts - 1:
            first_bit = alphabet[part_size * i :]
        else:
            first_bit = alphabet[part_size * i : part_size * (i+1)]
        results.append(pool.apply_async(do_job(first_bit)))

    pool.close()
    pool.join()
</code></pre>

<p>Thanks for your time.</p>