определить «оптимизировать дальше» ... Хотите увеличить скорость или уменьшить объем используемой памяти?
Если предположить, что приведенный выше псевдокод реализован правильно, то использование памяти должно быть уже довольно минимальным.
Скорость? Исходя из заявления о том, что вы работаете с большим набором данных, считыватель данных будет вашим самым большим источником медлительности. Так что если вы действительно хотите использовать параллельную обработку, то вам придется фрагментировать ваш набор данных (предположительно, открыть несколько считывателей?)
Но опять же, вы уже запускаете его в фоновом режиме, так что это действительно имеет значение?