@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Ускорение записи в excel файл
-
Подскажите, как можно ускорить запись данных в excel файл, за 1 раз в for софт заполняет по 1 ячейке в 10 столбцах. У меня 5643 csv, в итоге они должны стать 5643 строками в excel. Но вот эти строки оно записывает уже более 18 часов(и успело записать только 3800). И вот вопрос, как ускорить данный процесс?
-
постою послушаю. а вообще чото с экселем какойто гемор с большими объемами, лучше в текстовик писать строками с табом, а потом в эксель вставлять. еще прямо в бд можно но так пока не пробовал - следующий шаг, но там тоже вроде от 10к строк какойто гемор начинается. а через текстовик все в момент работает
-
@tekerosi, @GhostZ said in Скорость работы модуля Excel:
Нужно использовать асинхронный режим (отключить ожидание записи файла), но в конце скрипта нужно использовать действие "Закрыть файл" чтобы быть уверенным что файл сохранился, так как в асинхронном режиме файл сохраняется через 5 секунд после последнего взаимодействия, а скрипт может завершится раньше.
Пример работы в многопотоке ExcelMultithreadTest.xml

-
Ещё подскажите, у меня берется список с csv строками из ресурса "[[TITLE]]:[[AUTHOR]] и ещё 10", можно ли как-то записывать строки в excel файл без разпарсивания строки и без вот такой структуры?

"+ можно ли как-то дописывать файл, без учёта числа строки из переменной(A1, A2 и т.п.). То есть чтобы я мог поставить запись в несколько потоков, но данные не налаживались одни на одни.
-
@basuser123 Как понять через таб в текстовик? И пропусков нету? и по скорости нормально будет? Если прикрепишь скрины, буду признателен.
-
you can just put such csv list into exel with action write to the cells range
and if you check the ammount of rows in the exel already and put this action immediatly after that - you will not have problems with multythreading and it is quick.
Here is the simple test script for you: 716c7b02-7f96-412f-8b94-d8693e392e48-test23.xml
here is the screenshiots:


and here is the result
-

