Last active
October 16, 2017 16:44
-
-
Save paulwinex/5542bccc2e313a0751144275ee4f877f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class TasksPool(QObject): | |
# сигнал для старта следующей задачи или просто за запуска процесса просчета | |
startNextTaskSignal = Signal() | |
# сигнал окончания всех задач | |
allTasksCompleteSignal = Signal() | |
def __init__(self): | |
super() | |
# список задач | |
self.tasks_pool = [] | |
# процесс, объявление атрибута | |
self.process = None | |
# этот окончание сигнал конектим на запуск следующей задачи | |
self.startNextTaskSignal.connect(self.execute_task) | |
# это сигнал окончания очереди задач | |
self.alltasksCompleteSignal.connect(self.tasks_copmlete) | |
def add_task(self, cmd): | |
# основная фкнция запускающаа ОДИН процесс используя таску из начала очереди | |
# фукнция добавления задачи в очередь | |
# просто добавляем в список | |
self.tasks_pool.append(cmd) | |
# сигналим что есть новые задачи, надо стартовать | |
self.startNextTaskSignal.emit() | |
def execute_task(self): | |
# Если процесс уже запущен то ничего не делаем | |
if self.process and self.process.isOpen(): | |
return | |
# если тасков больше нет то сигналим что все таски завершены (может быть ложное срабатывание если там и было пусто) | |
if not self.tasks: | |
self.allTasksCompleteSignal.emit() | |
# забираем таск из начала очереди удаляя из списка | |
next_task = self.tasks_pool.pop(0) | |
# создаем процесс | |
self.process = QProcess() | |
# коннектим завершение процесса на старт следующей таски | |
self.process.finished.conenct(self.startNextTaskSignal.emit) | |
# поехали | |
self.process.start(next_task) | |
def tasks_copmlete(self): | |
# таски закончились | |
print 'ALL TASKS COMPLETE' | |
inst = TasksPool() | |
inst.add_task('cmd.exe') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment