Я не уверен на 100%, что у jython такая же проблема, но в C Python вы столкнетесь с проблемой с GIL или Global Interpreter Lock. Это будет означать, что, когда ваш фоновый поток работает, поток GUI не может запуститься (даже если он поставлен в очередь для запуска на другом ядре). Вы нажимаете кнопку, и ничего не происходит :(
Чтобы обойти это, я бы разделил длительный процесс на короткие шаги, которые можно запустить на событии, и поставил в очередь событие, чтобы начать следующий шаг по окончании текущего шага. Тогда графический интерфейс сможет работать между шагами, если это необходимо. Чем короче вы делаете шаги, тем более отзывчивым будет GUI - от 50 мс до 100 мс должно быть в порядке.
У этого подхода есть приятный побочный эффект: вам не нужно беспокоиться о потоках, блокировке, очереди сообщений или чем-либо еще. Вы можете попробовать добавить их в GUI, но события GUI и потоки могут бороться, что приводит к некоторым очень странным и трудным для отладки ошибкам.
Что касается "самых быстрых", то это, вероятно, самые низкие издержки для более коротких фоновых задач. Если вы создадите новый процесс для запуска фоновой задачи (очень большие издержки в Windows), он будет работать быстрее, потому что у него есть собственное ядро, но издержки запуска / остановки высоки.