wxPython неблокирующая многопоточность GUI и многопроцессорность?

Python 2.7.3 x64 wxPython 2.8 x64

Я читал немало о потоке Python и многопроцессорности, особенно о некоторых статьях Дуга Хеллмана, которые очень помогли. Тем не менее, я запутался в одном ...

яthought модуль многопроцессорной обработки Python был более или менее заменой модуля потоков, за исключением того, что аргументы должны выбираться, но я обнаружил, что для того, чтобы не блокировать мой графический интерфейс, сначала необходимо создать новый поток с потоками Затем выполните многопроцессорную обработку в этом потоке с помощью многопроцессорной обработки. Процесс. Это работает и работает хорошо, но мне кажется, что это немного глупо.

Если я попытаюсь выполнить многопроцессорную обработку напрямую без первой многопоточности, мой графический интерфейс по-прежнему блокируется до тех пор, пока не будет завершена многопроцессорная работа. Это работает как задумано, или я упускаю что-то фундаментальное в модуле многопроцессорности?

Если нужны примеры, я могу их предоставить.

Спасибо,

-RMWChaos

Пример был запрошен ...

Предполагая, что onProcess () запускается кнопкой в графическом интерфейсе, это блокирует графический интерфейс ...

import time
import multiprocessing as mp

def myWorker(a, b):
    time.sleep(0.1)
    print '{} * {} = {}'.format(a, b, a*b)

def onProcess(event):
    jobs = mp.cpu_count() * 2
    a = 5
    b = 10

    for job in range(jobs):
        mp.Process(target = myWorker, args = (a, b,)).start()

Хотя это не ...

import time
import multiprocessing as mp
import threading as th

def myWorker(a, b):
    time.sleep(0.1)
    print '{} * {} = {}'.format(a, b, a*b)

def onProcess(event):
    a = 5
    b = 10
    th.Thread(target = myThread, args = [a, b,]).start()

def myThread(a, b):
    jobs = mp.cpu_count() * 2

    for job in range(jobs):
        mp.Process(target = myWorker, args = (a, b,)).start()

Ответы на вопрос(2)

Ваш ответ на вопрос