'Creates multiple threads using simple (but slower) marshalling.
Single interpreter object, but a new stream is created per thread.
Returns the handles the threads will set when complete.'

def BeginThreadsSimpleMarshal(self, numThreads):

    interp = win32com.client.Dispatch('Python.Interpreter')
    events = []
    threads = []
    for i in range(numThreads):
        hEvent = win32event.CreateEvent(None, 0, 0, None)
        events.append(hEvent)
        interpStream = pythoncom.CoMarshalInterThreadInterfaceInStream(pythoncom.IID_IDispatch, interp._oleobj_)
        t = threading.Thread(target=self._testInterpInThread, args=(hEvent, interpStream))
        t.setDaemon(1)
        t.start()
        threads.append(t)
    interp = None
    return (threads, events)
