Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (3): « 1 [2] 3 »   

> Описание: Выполнение Python скриптов в Кибор в отдельном потоке с синхронизацией и без
Kibor
Отправлено: 03 Сентября, 2020 - 20:44:01
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




В runpython добавлен один, не обязательный параметр.
0 ли 1
Его назначение:
По умолчанию, при выполнение функции runpython без параметров, Кибор обязательно запускает новую версию Python.

При этом при завершение скрипта Кибор сканирует систему на запущенные все Python, которые были запущенны этой копией Кибор. Даже при прошлых запусках и по какой то причине не были им закрыты. И закрывает их.
То есть при новом запуске скрипта у нас всегда новая версия Python.

Это бывает не удобно, поскольку во время разработки скрипта, к примеру работа с вебдрайвером, нам необходимо не прерывать связь с ним (не закрывать Python), так как при новом запуске необходимо будет опять перезапускать браузер.

По умолчанию (без параметров) в runpython передается параметр 1.

Если мы укажем параметр 0
runpython (0), при остановке скрипта Кибор не будет закрывать Python, пока мы не вызовем функцию closepython или функцию runpython без параметров или с параметром 1.
При следующих запусках runpython (0) Кибор проверяет наличие запущенного Python и если он запущен, не запускает новую копию.

Поэтому при новом запуске скрипта мы можем продолжать работать с уже запущенным Python.

Кибор проверяет и закрывает все копии Python при закрытие программы. Поэтому при завершение работы Кибор, Python будет закрыт.
 
 Top
Adomb
Отправлено: 04 Сентября, 2020 - 16:58:01
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 185
Дата рег-ции: Июль 2015  
Репутация: 1




 Kibor пишет:
проверяет и закрывает все копии Python при закрытие программы. Поэтому при завершение работы Кибор, Python будет закрыт.

Win 10. Кибор запускается от админа. После выполнения runpython() и последующим закрытии кибора - процесс питона остаётся работать. Если выполнить код
Спойлер (Отобразить)

один процесс питона остаётся работать и тоже не завершается после закрытия кибора.
Это я так, для информации.

Kibor, сделать бы ещё возможность указать в скрипте рабочую папку питона. Хотя бы знать - ждать или не ждать такую возможность.
 
 Top
Kibor
Отправлено: 04 Сентября, 2020 - 17:14:59
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 Adomb пишет:
После выполнения runpython() и последующим закрытии кибора - процесс питона остаётся работать

И что происходит после нескольких запусков Кибор? И запусков скриптов?
Процессы не удаляются и нарастают?

 Adomb пишет:
Хотя бы знать - ждать или не ждать такую возможность

Ждать. Думаю будут разные настройки.
(Добавление)
 Adomb пишет:
runpython();
pause(3000);


beep(300,400);
runpython();
pause(3000);


beep(300,400);
closepython();
pause(3000);


beep(300,400);
closepython();

Бессмысленный код..

А что происходит при нормальном?

Пара run close
 
 Top
Adomb
Отправлено: 04 Сентября, 2020 - 17:42:43
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 185
Дата рег-ции: Июль 2015  
Репутация: 1




До завтра понаблюдаю, напишу.
 
 Top
neba2101
Отправлено: 27 Октября, 2020 - 13:43:18
Post Id



Пользователь
Мастер


Просматривает форум
Сообщений всего: 154
Дата рег-ции: Февр. 2017  
Репутация: 4




 Zireael пишет:
Так чуть короче:
CODE:
if (runpython()==0){messagebox ("Не удалось запустить Python"); goto er;}//Запускаем интерпретатор Python

messagebox ("корявое junlor = точое "+compare("junlor"));//Узнаем каккое слово близкое к корявому junlor
messagebox ("корявое worklng = точое "+compare("worklng"));//Узнаем каккое слово близкое к корявому worklng
messagebox ("корявое recognjtion = точое "+compare("recognjtion"));//Узнаем каккое слово близкое к корявому recognjtion
messagebox ("корявое recognllltjon точое = "+compare("recognllltjon"));//Узнаем каккое слово близкое к корявому recognllltjon
messagebox ("корявое lnterest = точое "+compare("lnterest"));//Узнаем каккое слово близкое к корявому lnterest
messagebox ("корявое vlolet = точое "+compare("vlolet"));//Узнаем каккое слово близкое к корявому vlolet
messagebox ("а на что похоже это? ietsert = точое "+compare("ietsert"));//Узнаем каккое слово близкое к корявому ietsert

closepython();//Завершаем работу с интерпретатором
er:;


function compare(string s1)
{
sendgetpython("import difflib");
sendgetpython("s1=^'"+s1+"^'");
__python
all_string = ("junior", "working", "recognition", "with", "violet", "interest", "renewal") # список слов
list = []
for x in all_string:
__end_python
sendgetpython(" list.append(difflib.SequenceMatcher(None, x.lower(), s1.lower()).ratio())^n");
return sendgetpython("print(all_string[list.index(max(list))])");
}




Помогите подправить код.

1. Если у меня текст, с которым нужно сравнивать храниться в string text[1000]? (размер массива около 1к слов)
2. Еще хотелось бы сделать это сравнение синхронным, и выводить значение в переменную string out например.


А в этом коде можно как-то посмотреть процент совпадения или как-то проконтролировать этот процесс?

Без совпадений compare("1111" ) в этом коде выдает 1 значение из all_string, как я понял.
Совпадение даже одного символа выдает результат (compare("v" ) выдает violet). При шуме в распознавании бывают непредсказуемые значения, и не хотелось бы чтобы ....i.i.i.i давало результат recognition.
 
 Top
Zireael
Отправлено: 28 Октября, 2020 - 00:52:27
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
можно как-то посмотреть процент совпадения

Заменить эту строку:
 Цитата:
return sendgetpython("print(all_string[list.index(max(list))])" );

на:
CODE:
return sendgetpython("print(all_string[list.index(max(list))], round(max(list), 2))");
 
 Top
Adomb
Отправлено: 30 Октября, 2020 - 05:07:38
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 185
Дата рег-ции: Июль 2015  
Репутация: 1




Если работают 2 экзешника, первый выполняет питоновские дела, а в это время второй выполнит команду closepython(), то процесс питона первого экзешника тоже закроется и питоновские дела первого экзешника выполнены не будут?

(Отредактировано автором: 30 Октября, 2020 - 05:08:06)

 
 Top
Zireael
Отправлено: 30 Октября, 2020 - 10:35:52
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
первый выполняет питоновские дела, а в это время второй выполнит команду closepython(), то процесс питона первого экзешника тоже закроется

Нет. Каждый exe запускает свой экземпляр интерпретатора.
 
 Top
Adomb
Отправлено: 18 Марта, 2021 - 19:36:05
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 185
Дата рег-ции: Июль 2015  
Репутация: 1




Kibor, вопрос.
Питоновский скрипт имеет вероятность зависнуть.

sendpython("чегото" ) - через некоторое время - getpython()
Если скрипт завис, то всё норм, кибор обработал как readerror и пошли дальше.
Но вот это "некоторое время", через которое посылаешь запрос getpython() может быть разным и завис скрипт или ещё отрабатывает можно не угадать.
Очень удобно использовать sendgetpython("чегото" ), но если скрипт завис - кибор тоже завис.
Можно придумать-сделать параметр, чтобы по истечении заданного времени в этом параметре, sendgetpython прерывался и кибор продолжал работать?
Надеюсь, понятно объяснил.

(Отредактировано автором: 18 Марта, 2021 - 19:38:45)

 
 Top
Kibor
Отправлено: 18 Марта, 2021 - 20:34:20
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Придумать то можно, но для этого стоит пользоваться связкой sendpython getpython и выход с цикла через какое то время.
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 5 (гостей: 5, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by