У меня есть отличная подпрограмма на Perl, написанная как часть модуля Perl. Не вдаваясь в подробности, он принимает в качестве аргументов строку и короткий список (часто берется из терминала) и выдает значение (сейчас всегда с плавающей запятой, но это может быть не всегда).
Прямо сейчас часть моего аргумента, содержащая список, принимает два значения, скажем (val1, val2). Я сохраняю вывод моей подпрограммы для сотен различных значений для val1 и val2, используя циклы for. Каждая итерация занимает почти секунду, поэтому на выполнение всего процесса уходит часы.
Недавно я прочитал о мистическом (для меня) вычислительном инструменте под названием «threading», который, по-видимому, может заменить циклы for с невероятно быстрым временем выполнения. У меня возникли проблемы с пониманием того, что это такое и что они делают, но я полагаю, что они имеют какое-то отношение к параллельным вычислениям (и я хотел бы, чтобы мой модуль был как можно более оптимизирован для параллельных процессоров).
Если я сохраню все значения, которые хочу передать val1 в виде списка, скажем @ val1 и то же самое для val2, как я могу использовать эти «потоки» для выполнения моей подпрограммы для каждой комбинации элементов val1 и val2? Кроме того, было бы полезно знать, как обобщить эту процедуру на подпрограмму, которая также принимает значения val3, val4 и т. Д.