Страница 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);
Вот эту часть:
Вынести в отдельную функцию и в таймере прописать название функции? Т.к. в таймере может быть не одна строчка на выполнения, а несколько и тогда код будет сильно нагроможден.
Спасибо.
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);
Вот эту часть:
Вынести в отдельную функцию и в таймере прописать название функции? Т.к. в таймере может быть не одна строчка на выполнения, а несколько и тогда код будет сильно нагроможден.
Спасибо.
Наверняка можно и в функцию (правда, сам не пробовал). Но самый простой вариант, записать все, что должно быть сделано, в скрипт (сценарий)
Код: Выделить всё
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