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

Iranec

Новичок
Joined
Feb 14, 2018
Messages
25
Reaction score
3
Points
3
Делаю шаблон и требуется брать данные из txt файла весом 100 мб.
Привязую txt файл к списку вроде бы все норм работает.
Но зеннопостер уже на 10 потоках начинает жрать 4-5 гб озу
Я так понял это через то что для каждого потока создается отдельный екземпляр списка

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

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

Sergodjan

Administrator
Staff member
Joined
Sep 5, 2012
Messages
19,516
Reaction score
8,703
Points
113
Делаю шаблон и требуется брать данные из txt файла весом 100 мб.
Привязую txt файл к списку вроде бы все норм работает.
Но зеннопостер уже на 10 потоках начинает жрать 4-5 гб озу
Я так понял это через то что для каждого потока создается отдельный екземпляр списка

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

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

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,379
Reaction score
2,039
Points
113
как привязываешь ?
если к каждому потоку через кубик привязать то конечно будет жрать
тупо говоря ты к каждому потоку привязал например файл в 100Мб
100х100 = пожирание памяти
 
  • Thank you
Reactions: Iranec

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,379
Reaction score
2,039
Points
113
вот шаб человека смотрю
это не правильно сделано
так же типо у него память жрёт, и он думает почему

2018-06-10_235737.png
 
  • Thank you
Reactions: Iranec

Iranec

Новичок
Joined
Feb 14, 2018
Messages
25
Reaction score
3
Points
3
Странно, при правильно построенном проекте, такой утечки памяти не должно быть.
Копия списка в памяти одна для всех потоков, видимо дело не в этом списке, а в том, что именно проекты делают с данными из спсика.
Эффект оч. похож на то, что в каждом потоке потом поднимается свой список (другой) и там наращиваются данные,
не очищая предыдущие.
Ничего не понял что вы написали.
Для теста сделал шаблон, размер списка 100 мб в шаблоне только 2 кубика получить случайную строку без удаления и пауза 10 сек
На 10 потоках шаблон жрет 4-5 гб озу
Кто не верит прыкрипляю шаблон можете сами протестить
 

Attachments

Iranec

Новичок
Joined
Feb 14, 2018
Messages
25
Reaction score
3
Points
3
как привязываешь ?
если к каждому потоку через кубик привязать то конечно будет жрать
тупо говоря ты к каждому потоку привязал например файл в 100Мб
100х100 = пожирание памяти
У меня не через кубик привязано, а через настройки списка
 

Iranec

Новичок
Joined
Feb 14, 2018
Messages
25
Reaction score
3
Points
3

Mikhail B.

Moderator
Joined
Dec 23, 2014
Messages
14,333
Reaction score
5,431
Points
113
На 10 потоках шаблон жрет 4-5 гб озу
Если включена галка браузер, то это нормально.
 

Iranec

Новичок
Joined
Feb 14, 2018
Messages
25
Reaction score
3
Points
3
Если включена галка браузер, то это нормально.
Браузер в шаблоне не используется и галка Не использувать браузер стоит.
Я же дал пример шаблона В предеущем посте.
 

Mikhail B.

Moderator
Joined
Dec 23, 2014
Messages
14,333
Reaction score
5,431
Points
113
Браузер в шаблоне не используется и галка Не использувать браузер стоит.
Я же дал пример шаблона В предеущем посте.
Да так и есть оперативка грузится жестко и остается висеть. Хотя в настройках стоит время жизни неактивной базы 1 минута. А оперативка не сбрасывает. Сбросила только после закрытия.
2018-06-12_153315.png
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,379
Reaction score
2,039
Points
113
так а в чём смысл шаба который в посте ?
тупо крутишь в цикле в 10 потоков ?
 

Iranec

Новичок
Joined
Feb 14, 2018
Messages
25
Reaction score
3
Points
3
Да так и есть оперативка грузится жестко и остается висеть. Хотя в настройках стоит время жизни неактивной базы 1 минута. А оперативка не сбрасывает. Сбросила только после закрытия.
View attachment 30301
Как я и предполагал это через то что для каждого потока создается отдельный экземпляр списка.
Пересмотрел весь ProjectMaker но так и не нашел как использувать 1 список на все потоки, в вики тоже нету никакой информации

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

Iranec

Новичок
Joined
Feb 14, 2018
Messages
25
Reaction score
3
Points
3
так а в чём смысл шаба который в посте ?
тупо крутишь в цикле в 10 потоков ?
Шаблон сделал для теста чтоб другие могли посмотреть проблему жора озу.
Не думаю что есть смысл кидать весь шаблон где более 50 кубиков.
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,379
Reaction score
2,039
Points
113
Шаблон сделал для теста чтоб другие могли посмотреть проблему жора озу.
Не думаю что есть смысл кидать весь шаблон где более 50 кубиков.
так у тебя цикл бесконечный, тупо забил память, ты чего ожидал
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,379
Reaction score
2,039
Points
113
создай public список
и один раз загрузи
и пусть все +100500 потоков к нему обращаются
а так ты гиг завалил на зенку что она не любит и ещё плюс цикл
 

orka13

Client
Joined
May 7, 2015
Messages
2,167
Reaction score
2,169
Points
113
так у тебя цикл бесконечный, тупо забил память, ты чего ожидал
Ты вот только сейчас не злись (а то судя по форуму ты какой-то очень злой последние дни :-)), но ты НЕ прав.
Цикл там не при чем вообще. Этот шаблон нормально работает в цикле, относительно маленькая дополнительная нагрузка на память из-за цикла там почти не играет роли. он так и должен жрать ~в четыре раза больше памяти RAM чем суммарный размер файлов списка на диске, даже без цикла. Это особенность почти всех программ.

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

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

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

doc

Client
Joined
Mar 30, 2012
Messages
8,613
Reaction score
4,601
Points
113
И получается, что даже, если мы работаем со списком только в режиме «чтения», то отсутвие этой опции заставляет алгоритм зенки отдельно для каждого потока копировать содержимое списка в свой виртуальный список в зенке. Теоретически это ускоряет будущие операции по поиску нужных строк в списке, так как обращение идет не к накопителю, а к быстрой памяти RAM, но последняя не резиновая, и на крупных файлах мы видим такой косяк.

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

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,379
Reaction score
2,039
Points
113
да на что мне злиться, он его грузит при каждом цикле, и это что нормально ?
поэтому и говорю что самый оптимальный вариант создать public список для всех потоков, загрузив один раз и работая все потоки с ним

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

orka13

Client
Joined
May 7, 2015
Messages
2,167
Reaction score
2,169
Points
113
да на что мне злиться, он его грузит при каждом цикле, и это что нормально ?
поэтому и говорю что самый оптимальный вариант создать public список для всех потоков, загрузив один раз и работая все потоки с ним
По моему наблюдению он ее грузит 1 раз и держит в памяти независимо от того будут ли дальше в шаблоне шаги с обработкой списка или нет. То есть даже если там просто шаб как в автра на 2 кубика - обращение к списку и пауза 100 секунд ()без цикла), то он все эти 100 секунд будет держать память забитой, и очистит ее только после окончания работы шаблона, + еще задержка в пару минут из-за опции "Инстанс > Время жизни неактивной базы".
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,379
Reaction score
2,039
Points
113
По моему наблюдению он ее грузит 1 раз и держит в памяти независимо от того будут ли дальше в шаблоне шаги с обработкой списка или нет. То есть даже если там просто шаб как в автра на 2 кубика - обращение к списку и пауза 100 секунд ()без цикла), то он все эти 100 секунд будет держать память забитой, и очистит ее только после окончания работы шаблона, + еще задержка в пару минут из-за опции "Инстанс > Время жизни неактивной базы".
грузит но не сохраняет, и получается в памяти не держит, у него получается каждый цикл с нуля список загружает
 

Iranec

Новичок
Joined
Feb 14, 2018
Messages
25
Reaction score
3
Points
3
Всем спасибо, галочка Сохранять изменения списка в файл помогла
Я данные из списка не удалял и думал что она не нужна
 

orka13

Client
Joined
May 7, 2015
Messages
2,167
Reaction score
2,169
Points
113
грузит но не сохраняет, и получается в памяти не держит, у него получается каждый цикл с нуля список загружает

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

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,379
Reaction score
2,039
Points
113
чувак галку поставил и всё сработало, а тестировал я давно такое и знаю как зенка с этим справляется
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)