mef-t
Осваивающий
- Сообщения
- 306
- Репутация
- 30
AutoIt: 3.3.14
Версия: 1.0.2
Категория: Автоматизация, Вспомогательные функции, Разное
Описание: Данная UDF помогает запустить несколько копий функций параллельно.
На текущий момент функции не могут возвращать результатов в основной скрипт.
На текущий момент в функцию нельзя передать аргументы
Т.к. autoit не поддерживает многопоточность, то данное решение просто создает несколько процессов.
Присутствуют 2 функции:
__paralelFunc_Init() - стартовая точка, после которой повторно запущенный процесс перейдет к запуску функции.
В зависимости от того, требуется ли включить библиотеки, переменные, или выполнение другого кода функция размещается или в самому начале скрипта, или несколько позже.
__paralelFunc($function, $count) - функция инициирует запуск дополнительных процессов.
Код/Пример:
Файл: _paralelFunc.au3
История версий:
Источник: autoit-script.ru
Автор(ы): mef-t
Дополнительно: О том, как передать аргументы, мысли есть. Чуть позже будет.
Сложнее получить результат. Просьба подсказать варианты передачи данных между процессами.
UPD:
На текущий момент добавил вывод через консоль, используя $STDOUT_CHILD.
Данные возвращаются через массив. В используемой функции возвращаемые данные нужно отправлять в консоль.
Версия: 1.0.2
Категория: Автоматизация, Вспомогательные функции, Разное
Описание: Данная UDF помогает запустить несколько копий функций параллельно.
На текущий момент функции не могут возвращать результатов в основной скрипт.
На текущий момент в функцию нельзя передать аргументы
Т.к. autoit не поддерживает многопоточность, то данное решение просто создает несколько процессов.
Присутствуют 2 функции:
__paralelFunc_Init() - стартовая точка, после которой повторно запущенный процесс перейдет к запуску функции.
В зависимости от того, требуется ли включить библиотеки, переменные, или выполнение другого кода функция размещается или в самому начале скрипта, или несколько позже.
__paralelFunc($function, $count) - функция инициирует запуск дополнительных процессов.
Код/Пример:
Код:
#include "_paralelFunc.au3"
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <array.au3>
Global $progressbar
;~ _test()
__paralelFunc_Init()
$arr = __paralelFunc('_test', 3, 1)
_ArrayDisplay($arr)
Func _test()
SRandom(@MSEC)
GUICreate("Прогресс бар", 220, 50, Random(50, 350, 1), Random(100, 400, 1))
$progressbar = GUICtrlCreateProgress(10, 10, 200, 20)
GUISetState()
_progressbar()
EndFunc
Func _progressbar()
$time = TimerInit()
For $i = 0 To 100 Step 1
GUICtrlSetData($progressbar, $i)
Sleep(20)
Next
$iDiff = TimerDiff($time)
ConsoleWrite("Разница во времени = " & $iDiff)
EndFunc
Файл: _paralelFunc.au3
История версий:
Источник: autoit-script.ru
Автор(ы): mef-t
Дополнительно: О том, как передать аргументы, мысли есть. Чуть позже будет.
Сложнее получить результат. Просьба подсказать варианты передачи данных между процессами.
UPD:
На текущий момент добавил вывод через консоль, используя $STDOUT_CHILD.
Данные возвращаются через массив. В используемой функции возвращаемые данные нужно отправлять в консоль.