@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
В базу в поле int не вписать дробное число ?
-
@kuzkuz Я для себя думал так зделать, но понял что ето неефективно. база есть на то база что потом можна фильтри делать. А с числами очень часто надо делать фильтри больше меньше, например вытащить с бази баланси аков больше такогото числа, со стрингом потом тупик. В итоге я сосдал 2 поля. до "." и после "." часто мне не надо учитивить копейки. Тогда достаточно фильровать по первому. Иногда надо прибавить к другой баланс. Ну тогда ндо витажть 2 числа - сложить перевести в число - прибавить и опять розложить перед записом в бд. Но ето не сложно - один кубик на все случаи сделал. Идея умножать на 100 - записовать в бд. потом после витаскивания делить на 100 - мне не очень. Не люблю когда в бд нереальние цифры
-
@f0cus said in В базу в поле int не вписать дробное число ?:
@kuzkuz издеваешься? int = ЦЕЛОЕ это сокращение от integer.
float = ПЛАВАТЬ это дробь, число с плавающей запятой.Что издеваюсь.
Я составлял проект. Составил. Начал реализовывать, а в базе нет числового поля кроме int
Я об этом. Что вышел нехороший облом -
@selector said in В базу в поле int не вписать дробное число ?:
@kuzkuz Я для себя думал так зделать, но понял что ето неефективно. база есть на то база что потом можна фильтри делать. А с числами очень часто надо делать фильтри больше меньше, например вытащить с бази баланси аков больше такогото числа, со стрингом потом тупик. В итоге я сосдал 2 поля. до "." и после "." часто мне не надо учитивить копейки. Тогда достаточно фильровать по первому. Иногда надо прибавить к другой баланс. Ну тогда ндо витажть 2 числа - сложить перевести в число - прибавить и опять розложить перед записом в бд. Но ето не сложно - один кубик на все случаи сделал. Идея умножать на 100 - записовать в бд. потом после витаскивания делить на 100 - мне не очень. Не люблю когда в бд нереальние цифры
У меня так не получится.
Мне надо складывать баллы (оценки юзеру). Если задание выполнено без косяков то оценка=1, с косяками то балл меньше еденицы, например 0.7. Как только юзер набрал нужное кол-во баллов (оно тоже в другой колонке в базе задано) так он получает аттестат ) -
@kuzkuz есть такое но дело в том что float и js да и вообще погромирование в общем лучше не давать эту возможность тем кто в этом не сильно разбирается, возможно по этому этой настройки нет. Не знаю мотивацию разработчика но да с float можно заблудиться легко
-
@selector said in В базу в поле int не вписать дробное число ?:
@f0cus база - склад без возможности фильтров
Да, если сделать поле string и писать мои числа туда.
Но даже и тут накостылить можно чтобы брать строки со значением меньше 4.1 или 5.2 например )) но не онлайн, а в срипте через перебор. а это конечно будет нагружать -
@f0cus said in В базу в поле int не вписать дробное число ?:
@kuzkuz сохраняй как строку, потом преобразуй parseFloat(), костыль да, но а что не костыль)), я в базу вообще все загоняю в base64 потом на месте обратно
так тебе выше @selector правильно написал. Онлайн не отфильтровать.
То что ты описываешь - это все понятно. Но кубиками с базы не пофильтруешь