while 루프가 메인에서 실행 중이며 스레드를 만들고 시작합니다. 그러나이 스레드가 작업을 마칠 때까지는 while 루프가 다른 스레드를 만들지 못하도록 차단합니다. 어떤 도움을 주셔서 감사합니다. 나는 조건을 사용하여 시도했지만 그것은 작동하지 않습니다.다른 스레드에서 기다리는 동안 메인 while 루프가 블로킹하지 않도록합니다. 파이썬
내 코드 : 모든
def main():
while True:
result = DoTaskBatch()
def DoTaskBatch():
for task in tasks:
task_thread = TaskThread(task)
task_thread.start()
class TaskThread(threading.Thread):
def __init__(self, task):
threading.Thread.__init__(self)
self.task = task
self.status = TASK_PASS
def run(self):
task = self.task
processed_image_name = DoTask(task)
이 작업을 수행 할 필요가 없습니다. 코드는 대기열에 작업이있을 때만 호출됩니다. 작업자를 관리하고 대기열에 작업 중인지 여부를 지속적으로 확인하지 않아도됩니다. 브로커가 당신을 위해 이것을 처리합니다. –
이것은 Google의 자체 샘플 프로젝트에서 수행하는 코드입니다. while 루프는 문제가되지 않습니다. 문제는 내 스레드 중 하나가 하나의 작업을 처리하는 데 너무 오래 걸리는 경우이고 while 루프는 차단되지 않아야하며 대기열에서 작업을 대기열에서 계속 임대해야합니다 (있는 경우). –