Страница 1 из 1

Не работает sleep

Добавлено: Ср янв 29, 2020 11:08 pm
klejnov
Добрый вечер, форумчане.

Не могу решить проблему:

сценарий:

Код: Выделить всё

say("Проверка 1", 2);
sleep(5);
say("Проверка 2", 2);
если запускать вручную, то между голосовыми сообщениями "Проверка 1" и "Проверка 2" пауза есть.

а если запускать голосом, через Алису, то сначала пауза 5 секунд, а потом сразу поочередно без паузы две фразы "Проверка 1" и "Проверка 2".

если сценарий сделать таким:

Код: Выделить всё

say("Проверка 1", 2);
sleep(5);
sleep(5);
say("Проверка 2", 2);
и снова запускать голосом, через Алису, то сначала пауза 10 секунд, а потом сразу поочередно без паузы две фразы "Проверка 1" и "Проверка 2".


Куда копать? как исправить? Спасибо.

Re: Не работает sleep

Добавлено: Ср янв 29, 2020 11:58 pm
SmoKE_xDDD
Не юзайте sleep, вы вешаете всю систему на 5 секунд.... Таймеры же есть...

Re: Не работает sleep

Добавлено: Чт янв 30, 2020 9:36 am
xor
klejnov писал(а):Добрый вечер, форумчане.

Не могу решить проблему:

сценарий:

Код: Выделить всё

say("Проверка 1", 2);
sleep(5);
say("Проверка 2", 2);
если запускать вручную, то между голосовыми сообщениями "Проверка 1" и "Проверка 2" пауза есть.

а если запускать голосом, через Алису, то сначала пауза 5 секунд, а потом сразу поочередно без паузы две фразы "Проверка 1" и "Проверка 2".

если сценарий сделать таким:

Код: Выделить всё

say("Проверка 1", 2);
sleep(5);
sleep(5);
say("Проверка 2", 2);
и снова запускать голосом, через Алису, то сначала пауза 10 секунд, а потом сразу поочередно без паузы две фразы "Проверка 1" и "Проверка 2".


Куда копать? как исправить? Спасибо.
Да, со слипом - осторожнее. А вот ещё - вместо say попробуйте debmes ('проверка 1'); и тд. И проверьте в х рее. Должна быть пауза. А say может кэшироваться, через очередь сообщений передаваться и тд

Отправлено с моего Redmi 4X через Tapatalk


Re: Не работает sleep

Добавлено: Чт янв 30, 2020 11:20 am
Chainik
Sleep использовать "вредно". Как правильно сказали, это подвешивает систему. Попробуйте использовать, как уже предложили, таймеры:

Код: Выделить всё

say("Проверка 1", 2);
setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);

Re: Не работает sleep

Добавлено: Чт янв 30, 2020 11:29 am
klejnov
Chainik писал(а):
Чт янв 30, 2020 11:20 am
Sleep использовать "вредно". Как правильно сказали, это подвешивает систему. Попробуйте использовать, как уже предложили, таймеры:

Код: Выделить всё

say("Проверка 1", 2);
setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);

А можно ли здесь:

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);
Вот эту часть:

Код: Выделить всё

say("Проверка 2", 2);
Вынести в отдельную функцию и в таймере прописать название функции? Т.к. в таймере может быть не одна строчка на выполнения, а несколько и тогда код будет сильно нагроможден.

Спасибо.

Re: Не работает sleep

Добавлено: Чт янв 30, 2020 12:22 pm
Chainik
klejnov писал(а):
Чт янв 30, 2020 11:29 am
Chainik писал(а):
Чт янв 30, 2020 11:20 am
Sleep использовать "вредно". Как правильно сказали, это подвешивает систему. Попробуйте использовать, как уже предложили, таймеры:

Код: Выделить всё

say("Проверка 1", 2);
setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);

А можно ли здесь:

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);
Вот эту часть:

Код: Выделить всё

say("Проверка 2", 2);
Вынести в отдельную функцию и в таймере прописать название функции? Т.к. в таймере может быть не одна строчка на выполнения, а несколько и тогда код будет сильно нагроможден.

Спасибо.
Наверняка можно и в функцию (правда, сам не пробовал). Но самый простой вариант, записать все, что должно быть сделано, в скрипт (сценарий)

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','runScript("Mnogo_vsyakikh_deistviii");',5);
или в метод

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','callMethod("Имя_Объекта.Mnogo_vsyakikh_deistviii");',5);

Re: Не работает sleep

Добавлено: Чт янв 30, 2020 12:32 pm
klejnov
Chainik писал(а):
Чт янв 30, 2020 12:22 pm
Наверняка можно и в функцию (правда, сам не пробовал). Но самый простой вариант, записать все, что должно быть сделано, в скрипт (сценарий)

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','runScript("Mnogo_vsyakikh_deistviii");',5);
или в метод

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','callMethod("Имя_Объекта.Mnogo_vsyakikh_deistviii");',5);
Как вариант. Спасибо.

Re: Не работает sleep

Добавлено: Чт янв 30, 2020 5:36 pm
xor
klejnov писал(а):
Chainik писал(а):
Чт янв 30, 2020 12:22 pm
Наверняка можно и в функцию (правда, сам не пробовал). Но самый простой вариант, записать все, что должно быть сделано, в скрипт (сценарий)

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','runScript("Mnogo_vsyakikh_deistviii");',5);
или в метод

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','callMethod("Имя_Объекта.Mnogo_vsyakikh_deistviii");',5);
Как вариант. Спасибо.
Можно предварительно загнать код в текстовую переменную и в таймер её подставлять

Отправлено с моего Redmi 4X через Tapatalk


Re: Не работает sleep

Добавлено: Чт янв 30, 2020 5:37 pm
xor
Chainik писал(а):Sleep использовать "вредно". Как правильно сказали, это подвешивает систему. Попробуйте использовать, как уже предложили, таймеры:

Код: Выделить всё

say("Проверка 1", 2);
setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);
Ну, если быть точным, не систему подвешивает, а тот поток, где слип выполняется

Отправлено с моего Redmi 4X через Tapatalk