В настоящее время я использую рабочие потоки в Python для получения задач из очереди и их выполнения следующим образом:
from queue import Queue
from threading import Thread
def run_job(item)
#runs an independent job...
pass
def workingThread():
while True:
item = q.get()
run_job(item)
q.task_done()
q = Queue()
num_worker_threads = 2
for i in range(num_worker_threads):
t = Thread(target=workingThread)
t.daemon = True
t.start()
for item in listOfJobs:
q.put(item)
q.join()
Это функционально, но есть проблема: некоторые задания должны быть выполненыв функции run_job очень требовательны к памяти и могут запускаться только индивидуально.Учитывая то, что я мог идентифицировать их во время выполнения, как мне удалось заставить параллельные рабочие потоки остановить их выполнение до тех пор, пока не будет выполнено указанное задание?
Редактировать: оно было помечено как возможный дубликат Python - Поток, который я могу приостановить и возобновить , и я уже упоминал этот вопрос, прежде чем задавать вопрос, и это, безусловно, ссылка, на которую следует ссылаться.Тем не менее, я не думаю, что это конкретно относится к этой ситуации, так как не учитывает задания, находящиеся в очереди, и как конкретно указывать на другие объекты, которые должны быть остановлены.