Добро пожаловать в мир Глобальной блокировки переводчиков a.k.a. GIL . Ваша функция выглядит как код, связанный с процессором (некоторые вычисления, циклы, ifs, доступ к памяти и т. Д.). Извините, вы не можете использовать потоки для увеличения производительности задач, связанных с процессором. Это ограничение Python.
В Python есть функции, которые выпускают GIL, например, дисковый ввод / вывод, сетевой ввод и вывод, который вы на самом деле пробовали: сон. И действительно, потоки увеличивают производительность задач, связанных с вводом / выводом. Но арифметический доступ и / или доступ к памяти не будут работать параллельно в Python.
Стандартный обходной путь - использовать процессы вместо потоков. Но это часто бывает болезненно из-за непростого межпроцессного взаимодействия. Вы также можете рассмотреть возможность использования некоторых библиотек низкого уровня, таких как numpy, которые на самом деле выпускают GIL в определенных ситуациях (вы можете сделать это только на уровне C, GIL не доступен из самого Python) или , используя другой язык без это ограничение, например C #, Java, C, C ++ и т. Д.