Загрузка фото из разных папок в многопотоке



  • Здравствуйте, целый день бьюсь с этой задачей...

    Вот допустим есть 5 папок с фото, как их распределить по 5 потокам. Тип для каждого потока своя папка с фото. Это у меня получилось по логам: картинки брались для каждого потока своя папка. Но при Диалоге Открыть Файл, в многопотоке они каким-то чудесным образом брались из одной папки. Ребят кто делал такое? Подскажите пожалуйста.



  • Я при подобной работе,записывал пути всех папок в файл и оттуда считывал по потокам



  • Галочку поставьте "Жадный алгоритм"



  • @000 не помогло(



  • Проблема еще актуальная



  • @SmirnoffIce said in Загрузка фото из разных папок в многопотоке:

    Проблема еще актуальная

    Как вы указываете в ресурсах 5 разных папок?



  • @Fox Screenshot_1.png

    Вот так, ресурс - photo это папка с папками с фото, а profile_photo это уже ресурс с со всеми папками с фото
    Я проверял по логам, там берутся разные папки. Напимер Поток 1 - Папка1, Поток 2 - Папка2 и тд.

    Проблема в том что в действии Открыть Диалог Файл, нельзя ставить profile_photo, сайт это определяет как папку, поэтому в потоке( не в функции OnApplicationStart) каждую папку profile_photo еще раз парсю Поиском Файлов, то бишь нахожу уже файлы. И это фото уже в 3 ресурс пихаю, можно было сказать что этот 3 ресурс становиться одинаковым во всех потоках. В потоках загружается разные фото! НО из одной папки.Screenshot_2.png
    Пробовал запихать поиск файлов для 3 ресурса в функцию OnApplicationStart, в итоге бас просто вылетает ВСЕГДА
    Пробовал запихать весь 3 ресурс в туже функцию, в итоге по логам бралась всегда первая папка с фото.
    Пробовал и в глобальные переменный сохранять, короче вообще не знаю как решить это.



  • This post is deleted!


  • @SmirnoffIce said in Загрузка фото из разных папок в многопотоке:

    @Fox

    Вот так, ресурс - photo это папка с папками с фото, а profile_photo это уже ресурс с со всеми папками с фото
    Я проверял по логам, там берутся разные папки. Напимер Поток 1 - Папка1, Поток 2 - Папка2 и тд.

    Проблема в том что в действии Открыть Диалог Файл, нельзя ставить profile_photo, сайт это определяет как папку, поэтому в потоке( не в функции OnApplicationStart) каждую папку profile_photo еще раз парсю Поиском Файлов, то бишь нахожу уже файлы. И это фото уже в 3 ресурс пихаю, можно было сказать что этот 3 ресурс становиться одинаковым во всех потоках. В потоках загружается разные фото! НО из одной папки.
    Пробовал запихать поиск файлов для 3 ресурса в функцию OnApplicationStart, в итоге бас просто вылетает ВСЕГДА
    Пробовал запихать весь 3 ресурс в туже функцию, в итоге по логам бралась всегда первая папка с фото.
    Пробовал и в глобальные переменный сохранять, короче вообще не знаю как решить это.

    Ресурсы глобальны, если вы создаёте ресурс в каждом потоке, то каждый поток перезаписывает один и тот же ресурс.
    Самое простое для вас решение, будет использовать разные ресурсы "из папки" для разных потоков. Определять какому потоку принадлежит какой ресурс можно через условие.

    Есть вариант по сложнее, в функции OnApplicationStart создайте глобальную переменную и положите в неё массив со всеми папками. Получать данные по индексу, используя номер потока. А файлы искать уже в каждом потоке.

    4a40940b-fe16-4ceb-9eec-99f19f19edac-изображение.png

    Тестовый скрипт

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

    Тестовый скрипт



  • Можно проще: поставить жадный алгоритм
    https://community.bablosoft.com/topic/595/жадный-алгоритм



  • @000 said in Загрузка фото из разных папок в многопотоке:

    Можно проще: поставить жадный алгоритм
    https://community.bablosoft.com/topic/595/жадный-алгоритм

    К сожалению этот способ не всегда срабатывает корректно
    120250a4-d4b6-4944-b7f7-e778b327966c-изображение.png

    хм, нашёл причину, нужно было установить "Время между использованиями" в 1
    91f3d3a4-0eed-4994-94b4-0f6c16a5f8f7-изображение.png

    тогда отрабатывает корректно
    513f2bc7-0e83-454d-b3e0-698abe0a4adf-изображение.png

    Тестовый скрипт

    Вот ещё вариант через метод RMap()
    https://community.bablosoft.com/topic/7219/как-перезапускать-скрипт-автоматически/28


Log in to reply