#python #multiprocessing
#python #многопроцессорная обработка
Вопрос:
Моя цель — сократить вдвое время поиска ответа, но если скрипт находит ответ, я хочу, чтобы он остановил и другой запущенный скрипт, но я не знаю, как это сделать, и искал целую вечность… :'(
Вот некоторый контекст: я пытаюсь найти конкретное треугольное число, которое имеет более 1000 делителей, и хотел бы запустить скрипт, который проверяет нечетные треугольные числа с шагом, и запустить другой скрипт, который проверяет четные случаи, эффективно выполняя двойную обработку, чтобы получить ответ!
Заранее спасибо!
Пример желаемого результата:
script_evens нашел ответ.
script_evens выполняет команду, которая останавливает script_odds.
Комментарии:
1. Что запускает эти процессы? Какой бы процесс ни запускал их, он должен отвечать за их завершение.
2. Вам следует рассмотреть многопоточность. Вы также можете запускать несколько потоков (в зависимости от количества ядер, которые у вас есть)…
3. Если это python, даже многопоточность не поможет из-за GIL (глобальная блокировка интерпретатора), которая позволяет запускать только один поток одновременно, что делает бесполезным несколько потоков, выполняющих код python. Вам нужно будет прибегнуть к многопроцессорной обработке.
Ответ №1:
Похоже, вы пытаетесь заново изобрести колесо многопоточности. Что вам действительно нужно, так это один процесс, который порождает несколько процессов, а затем убивает их, когда один из них находит ответ. Многопоточность / многопроцессорность могут быть сложными и, вероятно, выходят за рамки этого ответа, но вот краткое начальное руководство по python: https://blog.usejournal.com/multithreading-vs-multiprocessing-in-python-c7dc88b50b5b
Комментарии:
1. Спасибо, приятель, я довольно новичок в Python, поэтому ваша помощь очень много значит!