Многопроцессорность Python. Запуск нескольких процессов Python, работающих одновременно и незавивисимо друг от друга
Ознакомиться с оператором kiborcode. Оператор kiborcode позволяет встраивать исполняемый код Кибор непосредственно в код Python в блоках __python_sync и __python
Появилась возможность вывести консоль, где отображается работа скрипта Питона.
Пока только на вывод.
При выполнение Питоном инструкции input, выводится диалоговое окно.
Консоль отображает работу Питон скриптов, вызванных любым образом в Кибор.
Ее можно запустить и отключить в любой момент выполнения скрипта.
Для включения:
CODE:enableconsolepython(1, 1, 50, 50, 400, 600);
Первый параметр:
1 - поверх окон.
0 - обычно.
Второй:
1 - включить галку автопрокрутки.
0 - отключить.
Третий - шестой:
Координаты окна.
Возвращает 1 при удаче. 0 при не удаче.
Отключается консоль функцией
CODE:disableconsolepython();
без параметров.
Возвращает 1 при удаче. 0 при не удаче.
Для синхронного выполнения скрипта добавлена директива __python_sync
Ее назначение такое же как и __python, только выполнение идет синхронно.
Использование синхронной директивы __python_sync и вывод работы скрипта (Отобразить)CODE:string find="Распознать текст OCR";//Запрос
string path_webdriver=pathfolder()+"python\webdriver\geckodriver.exe"; // Путь к webdriver. C:\Program Files (x86)\Kibor\python\webdriver\geckodriver.exe
string path_browser="C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"; // Путь к браузеру Мозила
enableconsolepython(1, 1, 50, 50, 400, 600);
if (runpython()==0){messagebox ("Не удалось запустить Python"); goto er;}//Запускаем интерпретатор Python
//Подготовка
import();
//Запуск браузера и переход на https://www.google.com
start_browser();
//Находим на поисковой странице Гугла поле для ввода в поиск и вводим туда запрос
find_google();
//Искать на странице открывшегося поиска ссылку которая ведет на kibor-bot.com и кликнуть по ней
F: if (find_site("kibor-bot.com")==0)//Если этой станице ссылки на kibor-bot.com нет
{//Надо перейти на следующую станицу поиска
if (find_site("Следующая")==0) goto exits;//Если на этой странице нет кнопки Следующая завершить программу
pause(5000);//Если кликнули по кнопке Следующая пауза 5 секунд и повторяем поиск ссылки на kibor-bot.com
goto F;
}
exits:;
closepython();//Завершаем работу с интерпретатором
er:;
messagebox ("Финиш");
disableconsolepython();
function find_site(string find_link)//Искать на странице открывшегося поиска ссылку которая ведет на указанный линк
{
string rez;
sendpython("web.find_element_by_partial_link_text(^'"+find_link+"^').click()");//Отправляем Питону команду найти ссылку содержащую kibor-bot.com и по ней кликнуть
sendpython("print(^'yes^')");//Сразу же не ожидая окончания первой команды Отправить print('yes')
loop()//Замкнутый цикл в котором ждем ответ
{
rez=getpython();//Пытаемся считать ответ Если ссылка не была найдена, то в ответе кроме yes будет еще описание ошибки.
if (rez!="ERROR_READ_PYTHON")//Если Питон нам что то ответил..
{
//messagebox (rez+);//Посмотреть что приходит когда нашли ссыку и когда не нашли
if (rez=="yes")return 1;//Если в ответе только слово yes, значит мы нашли ссылку и описания ошибки нет.
return 0;//Иначе в ответе не только слово yes. Значит мы не нашли ссылку
}
}
}
function find_google()//Находим на поисковой странице Гугла поле для ввода в поиск и вводим туда значение переменной find
{
//Вначале инициализируем переменную finds в Pythen нашей переменной find синхронной функцией
sendgetpython("finds=^'"+find+"^'"); // finds=find
__python_sync
element = web.find_element_by_name('q')
element.send_keys(finds)
time.sleep(1);
element.send_keys(Keys.ENTER)
time.sleep(3);
__end_python
}
function start_browser()//Запуск браузера
{
//Вначале инициализируем переменные в Pythen нашими значениями синхронными функциями.
sendgetpython("p_web=^'"+path_webdriver+"^'");// p_web=path_webdriver
sendgetpython("p_br=^'"+path_browser+"^'"); // p_br=path_browser
__python_sync
web = webdriver.Firefox(executable_path=p_web, firefox_binary=p_br) # Тут мы используе переменные p_web и p_br
web.get('https://www.google.com')
time.sleep(1);
__end_python
}
function import()//Подготовка
{
__python_sync
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
__end_python
}
Пример синхронного выполнения и вывод выполнения во время работы скрипта.
CODE:enableconsolepython(1, 1, 50, 50, 400, 600);
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:;
messagebox ("Финиш");
disableconsolepython();
function compare(string s1)
{
sendgetpython("import difflib");
sendgetpython("s1=^'"+s1+"^'");
__python_sync
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))])");
} |