170 похожих чатов

Всем привет. Есть такая задача: надо параллельно основному потоку программы

поспать какое-то время, а потом запустить функцию в основном потоке и умереть. Я вычитал, что Thread в данном случае — плохая практика, потому что их надо менеджить. Но asyncio в Python 3.6 — вообще не простая вещь, это оверсложная система для моей задачи. Как лучше сделать? Может даже есть готовые библиотеки, которые сами за меня всё сделают?

PS: есть прекрасный schedule, но он не для единоразового действия в конкретную дату, а для повторяющихся.

6 ответов

7 просмотров

Где ты вычитал, что «Thread в данном случае — плохая практика»?

судя по твоему описанию, у тебя уже несколько тредов. В чем проблема использовать ещё один, или выполнить твое действие в существующем?

> надо вручную менеджить убийство одних тредов с запуском других Хз, что это значит. Тред ты убить не можешь (хотя, я не уверен, может, в глубинах апи линукса так можно). Но зачем тебе убивать их? > Может ли возникнуть проблема с тем, что тредов будет слишком много? Да, может. Ну, тут все зависит от задачи. Я сомневаюсь, что тебе надо будет тысячами создавть их > Или это абстракция питоновая, и на самом деле конкёрренси — вымышленная валюта? Треды в питоне — самые обычные треды ос, но есть GIL, который разрешает исполнять только одному треду в один момент времени одну команду байикода. При этом, на io GIL отпускается, так же он может отпускаться и в сишных библиотеках

Kamil-Foatov Автор вопроса
Pavel Павлик
> надо вручную менеджить убийство одних тредов с з...

Мне надо убивать треды, потому что время сна может поменяться, и его тогда надо будет пересчитать. Или таймер могут из основной программы выключить. Решением я вижу создать один тред и как shared memory между тредом и основным потоком хранить все записи со временем, когда надо функцию запустить. Непосредственно в треде спать по секунде-минуте и проверять не надо ли случайно сейчас запускать функцию.

Kamil Foatov
Мне надо убивать треды, потому что время сна может...

может просто подключить крон к выполнению задачи?

Похожие вопросы

Обсуждают сегодня

А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Вместо import и library придется писать importlib?
The Bird of Hermes
19
Всем привет! Подскажите, пожалуйста, почему не применяются настройки? Хочу задеплоить вот такой кластер в кубер. apiVersion: rabbitmq.com/v1beta1 kind: RabbitmqCluster metad...
Игорь Самарский
1
а как с таким борятся ? про термин стак тут мне пока не попадалось ghci> foldr (\(CotMD n ctM _) (mstep,pos) -> if ctM > mstep then (ctM, n) else (mstep, pos)) (0,0) $ take ...
Fedor
13
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
вот вопрос, вот про это type Events = [String] type Probs = [Double] у курта есть задание Если бы ваши типы Events и Probs были самостоятель­ ными типами данных, а не просто...
Fedor
8
А ещё docker можно к ассемблеру прикрутить. В целом, системы сборки это настолько несвязанная вещь... Это оффтоп, можно сказать, во всех чатах. Это просто проект, который помо...
КТ315
22
получается, что он находит одинаковое колво тегов, с разными именами, или я что тто не понял в таксоупе ?
Fedor
46
сурсы: import std/asyncdispatch, std/httpclient, std/json, std/sequtils, std/strutils, std/unicode, std/unidecode, std/uri, uuid4, regex const GPT4_API...
Qtless Qtless
4
Раз пошла тема про XML... Delphi XE 10.4.2(но это не важно), XML Data Binding Несколько XSD. В основном содержатся include на расширения. Несколько Namespace, это важно. Бин...
Alexey Gavrilov
4
Карта сайта