Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 6.17 Многопроцессорность Python

Страниц (1): [1]
 

1. Kibor - 28 Октября, 2023 - 15:17:00 - перейти к сообщению
Добавил возможность запускать одновременно несколько экземпляров Python.
В НЕ блокирующем режиме выполнения Python скриптов дает возможность одновременно выполнять различные задачи.
Для взаимодействия с Кибор можно использовать какое либо сообщение, которое каждый экземпляр Python отправит по завершению своей задачи.

Применение:
Хорошо подходит к примеру для многопроцессорного, параллельного парсинга различных сайтов и других задач, которые мало зависимы друг от друга.

В многопроцессорном режиме одноименные переменные Python являются уникальными для каждого процесса и невидимы в других.
Обмен данными между процессами можно легко организовать через Кибор.

Для запуска отдельного процесса Python используется та же функция
runpython
В виде единственного параметра надо передать константу ARRAY
Значение данной константы = -1

Данный код запустит три процесса Python
 Цитата:
runpython(ARRAY);
runpython(ARRAY);
runpython(ARRAY);


При вызове runpython с параметром ARRAY, она возвращает количество запущенных Python.
При первом вызове вернет 1, при втором 2 и так далее.

=========================================

Для одновременного использования множества запущенных процессов Python необходимо выполнять в них скрипт в НЕ блокирующем режиме.
Не блокирующий режим программируется с помощью функций
sendpython
getpython
и директив
__python
#скрипт Python
__end_python

Подробнее о этих функциях - Выполнение скриптов Python в Кибор

Но никто не мешает использовать Блокирующие функции и директивы
sendgetpython
__python_sync
__end_python
Но в этом случае Кибор будет ждать пока этот экземпляр Python не закончит работу со скриптом.

==========================================

Для выбора номера экземпляра Python, к которому относится передаваемые команды используется функция
selectpython(0);

В виде параметра принимает номер запущенного экземпляра Python. Начиная с 0.

Если указать selectpython(); без параметра, будет переключение на основной Python (если он был запущен с помощью функции runpython();

Использовать selectpython(0); selectpython(1); и т.д. можно для директив
__python
__end_python

__python_sync
__end_python

и функций
sendpython
getpython
sendpython

Для переключения между экземплярами Python.

Вызвать функцию selectpython с номером экземпляра Python достаточно один раз.
Все команды будут идти этому экземпляру, пока не вызовется selectpython с другим номером.

Кроме этого для функций
sendpython
getpython
sendpython

можно не использовать переключение с помощью selectpython, если номер экземпляра Python указать в них последним, не обязательным параметром.
при указание этого параметра эти функции будут игнорировать на какой номер переключен selectpython и отсылать команду экземпляру, номер которого указан этим параметром.

Пример стандартного вызова этих функций:
CODE:
sendpython("print(^'yes^')");
getpython();
sendgetpython("print(^'yes^')");


Пример указания последнего, не обязательного параметра для выбора номера экземпляра Python:
CODE:
sendpython("print(^'yes^')", 1);
getpython(1);
sendgetpython("print(^'yes^')", 1);


Так же можно не указывать номер в функциях, а переключаться так:
CODE:
selectpython(1);
sendpython("print(^'yes^')");
getpython();
sendgetpython("print(^'yes^')");

selectpython(2);
sendpython("print(^'yes^')");
getpython();
sendgetpython("print(^'yes^')");


==============================================================

Для использования директив

__python
__end_python
и
__python_sync
__end_python

Переключение с помощью selectpython обязательно для выбора экземпляра Python.

================================================================

closepython закрывает ВСЕ запущенные процессы Python

Пример использования:
не забудьте установить пробелы

Запуск 20 процессов, каждый из которых выполняет свою часть работы.
Много процессорный режим (Отобразить)



Запуск одного процесса который делает всю работу сам (Отобразить)
2. Kibor - 15 Ноября, 2023 - 09:53:19 - перейти к сообщению
На данном видео подробные пояснения как с многопроцесорностью на примере многопроцессорного, скоростного сканирования букмекерских контор.


Информация к теме
Шаблоны для создания кода Python, работающего синхронно и асинхронно

Powered by ExBB FM 1.0 Final