Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Какое основное достоинство cantok по сравнению с Event из stdlib для реализации идеи "cancellation token"? #29

Closed
zed opened this issue Mar 21, 2024 · 1 comment
Assignees
Labels
question Further information is requested

Comments

@zed
Copy link

zed commented Mar 21, 2024

Допустим я хочу добавить cantok зависимость в набор инструментов, используемых командой. Какие основные аргументы можно озвучить в поддержку токенов из cantok по сравнению реализацией шаблона "cancellation token", используя {asyncio,threading,multiprocessing}.Event (is_set, wait, set методы)? (looking for elevator pitch)

@pomponchik pomponchik added the question Further information is requested label Apr 26, 2024
@pomponchik pomponchik self-assigned this Jul 22, 2024
@pomponchik
Copy link
Owner

pomponchik commented Jul 22, 2024

Привет!

cantok не может заменить ивенты из multiprocessing. Все, что связано с взаимодействием между процессами - не сюда. Дальше буду сравнивать только с ивентами из asyncio и threading.

  1. Токены из cantok умеют отменяться автоматически, например по таймауту или по произвольному условию. Использующему их коду при этом не нужно знать причину, по которой отменен токен, то есть токен полностью инкапсулирует эти причины внутри себя и тем самым упрощает пользовательский код.

  2. Токены отмены из cantok можно произвольно комбинировать, получая на выходе довольно сложные условия выхода, выраженные очень в простой и визуально понятной форме. К примеру, токены можно суммировать.

  3. Токены из cantok универсальны, они могут быть использованы как в многопоточном, так и в async-коде. Они не заставляют вас выбирать, к какому из лагерей - sync или async - вы хотите отнести свой код.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants