Пригодность данной задачи должна быть обработана в многопроцессной моде зависит от природы задачи и взаимозависимостей (или его отсутствия) различных подзадач, не на тем, как Подготовлен подзадач.
Другими словами, используя формулировку на вопрос, способность к этой проблеме, чтобы не быть так медленно по с участием параллелизм зависит от того, что метод process_it() является либо таким образом, что:
- производит тот же результат (прямой и побочный эффект) каждый раз, когда он вызывается с заданным набором параметров. (это типичный случай для многопроцессорной задачи)
- его общий результат для серии вызовов не зависит от порядка рядов (это немного странный случай многозадачной задачи).
И это не зависит от того, что порядок, в котором ряд вызовов process_it() производится декартова произведения списка (Каждый к каждой вопроса) или каким-то заранее подготовленным списком или каким-то другим способом.
Кроме того, сложность задачи (O (N^2) в вопросе) не уменьшается, потому что проблема передается в многопроцессной моды а.Фактически логика многопроцессорности часто вводит дополнительную сложность («платить» за организацию и подачу нескольких потоков и объединение их результатов); такая сложная сложность, однако, обычно имеет другой порядок величины (скажем, постоянный или, возможно, линейный по n) и, следовательно, не изменяет общую сложность.
Несвязанные способности для процесса должны быть разделены в нескольких асинхронных подзадачах, может быть таким, что сложность проблемы может быть уменьшена, так как намекает в некоторых других ответах (например, если process_it (a, b) является таким же, как process_it (b, a), или если базовые данные таковы, что их сортировка сначала может уменьшить количество раз, когда нужно вызвать process_it и т. д.)
Кроме того, языки программирования или библиотеки/среды упрощают управление многопроцессорной обработкой, этот вопрос обычно носит языковой характер; возможно, тег python и иллюстративный фрагмент путают проблему как-то.
Если ваш стартовый алгоритм O (n^2), и вы можете его упростить, а затем идите. Вопросы, связанные с реализацией, ортогональны этому. – jldupont
Как уже было сказано, нет общего способа сделать это намного лучше. Теперь, возможно, элементам нужно знать только о * некоторых * других элементах или * сводной информации *, рассчитанных из всех элементов заранее. Возможно, будет гораздо быстрее. Но вопрос не дает достаточной информации, чтобы даже рассуждать о том, какой может быть правильный трюк. –