1 Список на все потоки, как?

Iranec

Новичок
Регистрация
14.02.2018
Сообщения
25
Благодарностей
3
Баллы
3
Делаю шаблон и требуется брать данные из txt файла весом 100 мб.
Привязую txt файл к списку вроде бы все норм работает.
Но зеннопостер уже на 10 потоках начинает жрать 4-5 гб озу
Я так понял это через то что для каждого потока создается отдельный екземпляр списка

Как сделать чтоб 1 список был на все потоки?

знаю что можно работать с БД но для меня это не вариант так как прийдется каждые пол часа загружать данные из txt в БД
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 438
Благодарностей
9 136
Баллы
113
Делаю шаблон и требуется брать данные из txt файла весом 100 мб.
Привязую txt файл к списку вроде бы все норм работает.
Но зеннопостер уже на 10 потоках начинает жрать 4-5 гб озу
Я так понял это через то что для каждого потока создается отдельный екземпляр списка

Как сделать чтоб 1 список был на все потоки?

знаю что можно работать с БД но для меня это не вариант так как прийдется каждые пол часа загружать данные из txt в БД
Странно, при правильно построенном проекте, такой утечки памяти не должно быть.
Копия списка в памяти одна для всех потоков, видимо дело не в этом списке, а в том, что именно проекты делают с данными из спсика.
Эффект оч. похож на то, что в каждом потоке потом поднимается свой список (другой) и там наращиваются данные,
не очищая предыдущие.
 
  • Спасибо
Реакции: orka13

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
как привязываешь ?
если к каждому потоку через кубик привязать то конечно будет жрать
тупо говоря ты к каждому потоку привязал например файл в 100Мб
100х100 = пожирание памяти
 
  • Спасибо
Реакции: Iranec

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
вот шаб человека смотрю
это не правильно сделано
так же типо у него память жрёт, и он думает почему

2018-06-10_235737.png
 
  • Спасибо
Реакции: Iranec

Iranec

Новичок
Регистрация
14.02.2018
Сообщения
25
Благодарностей
3
Баллы
3
Странно, при правильно построенном проекте, такой утечки памяти не должно быть.
Копия списка в памяти одна для всех потоков, видимо дело не в этом списке, а в том, что именно проекты делают с данными из спсика.
Эффект оч. похож на то, что в каждом потоке потом поднимается свой список (другой) и там наращиваются данные,
не очищая предыдущие.
Ничего не понял что вы написали.
Для теста сделал шаблон, размер списка 100 мб в шаблоне только 2 кубика получить случайную строку без удаления и пауза 10 сек
На 10 потоках шаблон жрет 4-5 гб озу
Кто не верит прыкрипляю шаблон можете сами протестить
 

Вложения

Iranec

Новичок
Регистрация
14.02.2018
Сообщения
25
Благодарностей
3
Баллы
3
как привязываешь ?
если к каждому потоку через кубик привязать то конечно будет жрать
тупо говоря ты к каждому потоку привязал например файл в 100Мб
100х100 = пожирание памяти
У меня не через кубик привязано, а через настройки списка
 

Iranec

Новичок
Регистрация
14.02.2018
Сообщения
25
Благодарностей
3
Баллы
3

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113

Iranec

Новичок
Регистрация
14.02.2018
Сообщения
25
Благодарностей
3
Баллы
3
Если включена галка браузер, то это нормально.
Браузер в шаблоне не используется и галка Не использувать браузер стоит.
Я же дал пример шаблона В предеущем посте.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
Браузер в шаблоне не используется и галка Не использувать браузер стоит.
Я же дал пример шаблона В предеущем посте.
Да так и есть оперативка грузится жестко и остается висеть. Хотя в настройках стоит время жизни неактивной базы 1 минута. А оперативка не сбрасывает. Сбросила только после закрытия.
2018-06-12_153315.png
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
так а в чём смысл шаба который в посте ?
тупо крутишь в цикле в 10 потоков ?
 

Iranec

Новичок
Регистрация
14.02.2018
Сообщения
25
Благодарностей
3
Баллы
3
Да так и есть оперативка грузится жестко и остается висеть. Хотя в настройках стоит время жизни неактивной базы 1 минута. А оперативка не сбрасывает. Сбросила только после закрытия.
Посмотреть вложение 30301
Как я и предполагал это через то что для каждого потока создается отдельный экземпляр списка.
Пересмотрел весь ProjectMaker но так и не нашел как использувать 1 список на все потоки, в вики тоже нету никакой информации

Очень жаль что нету такой функции так как с более менее большими списками работать не реально из за жора озу.
 

Iranec

Новичок
Регистрация
14.02.2018
Сообщения
25
Благодарностей
3
Баллы
3
так а в чём смысл шаба который в посте ?
тупо крутишь в цикле в 10 потоков ?
Шаблон сделал для теста чтоб другие могли посмотреть проблему жора озу.
Не думаю что есть смысл кидать весь шаблон где более 50 кубиков.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
Шаблон сделал для теста чтоб другие могли посмотреть проблему жора озу.
Не думаю что есть смысл кидать весь шаблон где более 50 кубиков.
так у тебя цикл бесконечный, тупо забил память, ты чего ожидал
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
создай public список
и один раз загрузи
и пусть все +100500 потоков к нему обращаются
а так ты гиг завалил на зенку что она не любит и ещё плюс цикл
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
так у тебя цикл бесконечный, тупо забил память, ты чего ожидал
Ты вот только сейчас не злись (а то судя по форуму ты какой-то очень злой последние дни :-)), но ты НЕ прав.
Цикл там не при чем вообще. Этот шаблон нормально работает в цикле, относительно маленькая дополнительная нагрузка на память из-за цикла там почти не играет роли. он так и должен жрать ~в четыре раза больше памяти RAM чем суммарный размер файлов списка на диске, даже без цикла. Это особенность почти всех программ.

А вся затычка в том, что автор не использует чекбокс в настройках списка «сохранять изменения списка в файл»:

И получается, что даже, если мы работаем со списком только в режиме «чтения», то отсутвие этой опции заставляет алгоритм зенки отдельно для каждого потока копировать содержимое списка в свой виртуальный список в зенке. Теоретически это ускоряет будущие операции по поиску нужных строк в списке, так как обращение идет не к накопителю, а к быстрой памяти RAM, но последняя не резиновая (каждый поток получается жрет в 4 раза больше памяти чем размер файла списка), и на крупных файлах мы видим такой косяк.

Лучше привязать жестко к файлу, а для быстродействия сам файл разместить на SSD или RAM-диске (подробная инструкция есть в "Spoiler: #3. Что такое RAM-диск и как его создать" этой темы.), что приблизит скорость обработки к максимуму, но не будет дублировать использование памяти в каждом потоке.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
И получается, что даже, если мы работаем со списком только в режиме «чтения», то отсутвие этой опции заставляет алгоритм зенки отдельно для каждого потока копировать содержимое списка в свой виртуальный список в зенке. Теоретически это ускоряет будущие операции по поиску нужных строк в списке, так как обращение идет не к накопителю, а к быстрой памяти RAM, но последняя не резиновая, и на крупных файлах мы видим такой косяк.

Лучше привязать жестко к файлу, а для быстродействия сам файл разместить на SSD или RAM-диске (подробная инструкция есть в "Spoiler: #3. Что такое RAM-диск и как его создать" этой темы.), что приблизит скорость обработки к максимуму, но не будет дублировать использование памяти в каждом потоке.
немного поправлю. Списки всегда в рам. По идее, время от времени они обновляют файл, время от времени с файлами сверяются, но нет такого, что идёт постоянное обращение к диску
 
  • Спасибо
Реакции: orka13

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
да на что мне злиться, он его грузит при каждом цикле, и это что нормально ?
поэтому и говорю что самый оптимальный вариант создать public список для всех потоков, загрузив один раз и работая все потоки с ним

P.S. и это будет быстрее в +100500 раз быстрее не имея рам диска даже, для меня рам диск ни что
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
да на что мне злиться, он его грузит при каждом цикле, и это что нормально ?
поэтому и говорю что самый оптимальный вариант создать public список для всех потоков, загрузив один раз и работая все потоки с ним
По моему наблюдению он ее грузит 1 раз и держит в памяти независимо от того будут ли дальше в шаблоне шаги с обработкой списка или нет. То есть даже если там просто шаб как в автра на 2 кубика - обращение к списку и пауза 100 секунд ()без цикла), то он все эти 100 секунд будет держать память забитой, и очистит ее только после окончания работы шаблона, + еще задержка в пару минут из-за опции "Инстанс > Время жизни неактивной базы".
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
По моему наблюдению он ее грузит 1 раз и держит в памяти независимо от того будут ли дальше в шаблоне шаги с обработкой списка или нет. То есть даже если там просто шаб как в автра на 2 кубика - обращение к списку и пауза 100 секунд ()без цикла), то он все эти 100 секунд будет держать память забитой, и очистит ее только после окончания работы шаблона, + еще задержка в пару минут из-за опции "Инстанс > Время жизни неактивной базы".
грузит но не сохраняет, и получается в памяти не держит, у него получается каждый цикл с нуля список загружает
 

Iranec

Новичок
Регистрация
14.02.2018
Сообщения
25
Благодарностей
3
Баллы
3
Всем спасибо, галочка Сохранять изменения списка в файл помогла
Я данные из списка не удалял и думал что она не нужна
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
грузит но не сохраняет, и получается в памяти не держит, у него получается каждый цикл с нуля список загружает

Перечитай мой пост внимательнее первый. Вот его шаб без цикла с паузой в конце 70 секунд. Запусти, если не веришь, и наблюдай как забивает RAM на 10 потоках.
www.orka13.ru/fls/Zenno/test_shab_70_sec.zip
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
чувак галку поставил и всё сработало, а тестировал я давно такое и знаю как зенка с этим справляется
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)