Управление выполнением потока в Python - PullRequest
0 голосов
/ 08 октября 2018

В настоящее время я использую рабочие потоки в 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 - Поток, который я могу приостановить и возобновить , и я уже упоминал этот вопрос, прежде чем задавать вопрос, и это, безусловно, ссылка, на которую следует ссылаться.Тем не менее, я не думаю, что это конкретно относится к этой ситуации, так как не учитывает задания, находящиеся в очереди, и как конкретно указывать на другие объекты, которые должны быть остановлены.

1 Ответ

0 голосов
/ 08 октября 2018

Я бы приостановил / возобновил потоки, чтобы они запускались индивидуально.Следующий поток Python - поток, который я могу приостановить и возобновить указывает, как это сделать.

...