поспать какое-то время, а потом запустить функцию в основном потоке и умереть. Я вычитал, что Thread в данном случае — плохая практика, потому что их надо менеджить. Но asyncio в Python 3.6 — вообще не простая вещь, это оверсложная система для моей задачи. Как лучше сделать? Может даже есть готовые библиотеки, которые сами за меня всё сделают?
PS: есть прекрасный schedule, но он не для единоразового действия в конкретную дату, а для повторяющихся.
Где ты вычитал, что «Thread в данном случае — плохая практика»?
судя по твоему описанию, у тебя уже несколько тредов. В чем проблема использовать ещё один, или выполнить твое действие в существующем?
> надо вручную менеджить убийство одних тредов с запуском других Хз, что это значит. Тред ты убить не можешь (хотя, я не уверен, может, в глубинах апи линукса так можно). Но зачем тебе убивать их? > Может ли возникнуть проблема с тем, что тредов будет слишком много? Да, может. Ну, тут все зависит от задачи. Я сомневаюсь, что тебе надо будет тысячами создавть их > Или это абстракция питоновая, и на самом деле конкёрренси — вымышленная валюта? Треды в питоне — самые обычные треды ос, но есть GIL, который разрешает исполнять только одному треду в один момент времени одну команду байикода. При этом, на io GIL отпускается, так же он может отпускаться и в сишных библиотеках
Мне надо убивать треды, потому что время сна может поменяться, и его тогда надо будет пересчитать. Или таймер могут из основной программы выключить. Решением я вижу создать один тред и как shared memory между тредом и основным потоком хранить все записи со временем, когда надо функцию запустить. Непосредственно в треде спать по секунде-минуте и проверять не надо ли случайно сейчас запускать функцию.
А какая у тебя задача вообще?
может просто подключить крон к выполнению задачи?
Обсуждают сегодня