Task - Пользовательская задача
- class axipy.Task
Пользовательская задача. Если выполнение функции в программе занимает длительное время, графический интерфейс Аксиомы будет неотзывчивым в течении этого времени. Чтобы длительная задача выполнялось в отдельном потоке и не нарушала работу интерфейса Аксиомы, такую функцию следует поместить в задачу, используя класс
axipy.Task
.Задачи (объекты класса
axipy.Task
) добавляются в менеджерaxipy.task_manager
при создании конструктором, и удаляются при завершении задачи (успешно или с ошибкой). Еще не запущенную задачу, можно удалить из менеджера, вызвав методaxipy.Task.cancel
. Одну задачу можно запустить только один раз, завершенную задачу нельзя запустить повторно.См.также
См.также
Конструктор класса:
__init__
(function[, name, description, ...])Конструктор класса.
Свойства:
Возвращает описание задачи.
Возвращает идентификатор задачи.
Возвращает True, если задача была отменена.
Устанавливает или возвращает максимальное значение диапазона прогресса задачи.
Устанавливает или возвращает отображаемое описание задачи.
Устанавливает или возвращает минимальное значение диапазона прогресса задачи.
Возвращает имя задачи.
Устанавливает или возвращает диапазон прогресса задачи.
Возвращает результат задачи.
Возвращает текущее состояние задачи.
Возвращает идентификатор потока в котором выполняется задача.
Устанавливает или возвращает отображаемое имя задачи.
Устанавливает или возвращает текущее значение прогресса задачи.
Методы:
cancel
()Уведомляет задачу об отмене.
raise_if_canceled
([message])Вызывает исключение об отмене задачи
axipy.Task.CanceledException
.run_and_get
(*args, **kwargs)Запускает задачу и ждет результат.
start
(*args, **kwargs)Запускает задачу без ожидания результата.
Сигналы:
Возвращает сигнал, испускаемый при завершении задачи.
Возвращает сигнал, испускаемый при изменении отображаемого описании задачи.
Возвращает сигнал, испускаемый при изменении диапазона прогресса задачи.
Возвращает сигнал, испускаемый при старте задачи.
Возвращает сигнал, испускаемый при изменении отображаемого имени задачи.
Возвращает сигнал, испускаемый при изменении текущего значения прогресса задачи.
Исключения:
Исключение при отмене задачи.
Классы:
Диапазон прогресса задачи.
Состояние задачи.
- exception CanceledException
Исключение при отмене задачи.
- class Range
Диапазон прогресса задачи.
Атрибуты:
min
Минимальное значение прогресса задачи.
max
Максимальное значение прогресса задачи.
- class Status
Состояние задачи.
Атрибуты:
IDLE
В ожидании.
RUNNING
Запущена.
SUCCESS
Выполнена успешно.
CANCELED
Отменена.
ERROR
Завершилась с ошибкой.
- __init__(function: Callable, name: str = '', description: str = '', title: str = '', message: str = '')
Конструктор класса.
Создает экземпляр класса.
- Параметры:
function – Функция.
name – Имя.
description – Описание.
title – Отображаемое имя.
message – Отображаемое описание.
- cancel()
Уведомляет задачу об отмене. Устанавливает свойство
axipy.Task.is_canceled
на True и меняет состояние задачиaxipy.Task.status
наaxipy.Task.Status.CANCELED
. Вызов метода при статусеaxipy.Task.Status.IDLE
также удалит задачу изaxipy.task_manager
. Метод является слотом, Slot() (PySide2.QtCore.Slot
).
- property finished: Signal
Возвращает сигнал, испускаемый при завершении задачи. Передает ссылку на экземпляр задачи, для получения результата, статуса и других атрибутов задачи.
- Тип результата:
Signal[
axipy.Task
]
- property id: int
Возвращает идентификатор задачи. Идентификатором задачи является её порядковый номер в менеджере задач
axipy.task_manager
.
- property is_canceled: bool
Возвращает True, если задача была отменена. Чтобы отменить задачу (назначить True для свойства
axipy.Task.is_canceled
), нужно вызватьaxipy.Task.cancel()
.
- property message_changed: Signal
Возвращает сигнал, испускаемый при изменении отображаемого описании задачи.
- Тип результата:
Signal[str]
- raise_if_canceled(message: Optional[str] = None)
Вызывает исключение об отмене задачи
axipy.Task.CanceledException
.- Параметры:
message – Сообщение, передаваемое в исключение.
- property range_changed: Signal
Возвращает сигнал, испускаемый при изменении диапазона прогресса задачи.
- Тип результата:
Signal[axipy.Task.Range]
- property result: Any
Возвращает результат задачи. (Возвращаемое значение пользовательской функции.) Если во время выполнения задачи, было вызвано исключение, то при получении результата, исключение будет вызвано повторно (За исключением пользовательской отмены
axipy.Task.CanceledException
).- Исключение:
Exception – Если во время выполнения задачи, было вызвано исключение.
- run_and_get(*args, **kwargs) Any
Запускает задачу и ждет результат. Останавливается лишь выполнение кода python, цикл обработки событий Qt продолжает работу. (Сигналы и события продолжают обрабатываться.) Возвращает результат задачи. (Возвращаемое значение пользовательской функции.) Если во время выполнения задачи, было вызвано исключение, то при получении результата, исключение будет вызвано повторно (За исключением пользовательской отмены
axipy.Task.CanceledException
).- Параметры:
*args – Параметры, передаваемые в пользовательскую функцию.
**kwargs – Именованные параметры, передаваемые в пользовательскую функцию.
- Результат:
Результат выполнения задачи. (Возвращаемое значение пользовательской функции.)
- Исключение:
Exception – Если во время выполнения задачи, было вызвано исключение.
- start(*args, **kwargs)
Запускает задачу без ожидания результата. Чтобы получить результат, необходимо подписаться на сигнал
axipy.Task.finished
и обратиться к свойствуaxipy.Task.result
.- Параметры:
*args – Параметры, передаваемые в пользовательскую функцию.
**kwargs – Именованные параметры, передаваемые в пользовательскую функцию.
- property started: Signal
Возвращает сигнал, испускаемый при старте задачи.
- Тип результата:
Signal[]
- property thread_id: Optional[int]
Возвращает идентификатор потока в котором выполняется задача. Когда задача не выполняется, возвращает None.