Как динамически добавлять поток или выбирать поток из пула потоков в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как динамически добавлять поток или выбирать поток из пула потоков в Python

Сообщение Anonymous »

Я хочу запланировать выполнение задач в потоках с возможностью динамического добавления или удаления задач из процесса. Моя цель — предварительно создать пул потоков, например [th1, th2, th3], а затем назначить задачи (например, t1, t2, t3) этим потокам через вызов API в моей системе.
Когда я получаю задачу типа t1, я хочу выбрать случайный поток из пула и назначить ему эту задачу.
До сих пор я экспериментировал с ThreadPoolExecutor в Python, но похоже, он не предоставляет возможности динамического добавления или удаления задач из уже запущенного процесса.
Примечание. Задачи, с которыми я имею дело, представляют собой прослушиватели событий, которые выполняются непрерывно, пока я не приму решение. чтобы прекратить прослушивание шины событий. Поэтому я подумал, что было бы полезно иметь пул потоков, из которого я мог бы выбирать и назначать задачи прослушивателя событий.

Код: Выделить всё

def run(task_arg):
# core logic of the listener which continuously listens for the
# events

def using_executor():
argument_dicts = [
{"topic": "/captureSaveEvent"},
]
logging.basicConfig()

with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor:
futures = {executor.submit(run, arg): arg for arg in argument_dicts}
for future in concurrent.futures.as_completed(futures):
try:
future.result()
except Exception as e:
print(f"Thread for {futures[future]} failed with exception: {e}")

Выше я определил задачу, которая будет отправлена ​​в аргумент_dicts, но я хочу добавить задачу в этот же процесс, добавив новый поток или выбрав поток из пул потоков и назначить ему задачу, я не хочу создавать новый процесс и создавать новые потоки для каждой новой задачи, которую я хочу добавить, поскольку задача представляет собой события прослушивателя, которые не завершаются, поэтому процесс, создавший потоки будут оставаться активными до тех пор, пока я выйду из прослушивателя или возникнут какие-либо проблемы в логике прослушивателя.
Я ожидаю, что мне нужно знать идентификатор процесса и, используя этот pid, Я должен иметь возможность выбрать поток из этого процесса, который сможет свободно принимать новые задачи и отправлять ему задание.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ad-in-pyth
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»