Многопоток

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63
Разобрался с работой в многопотоке, когда берется строка, удаляется из файла.
Изи.

Надоело каждый раз наполнять файл (по сути одними и теми же данными)

Подскажите основную логику как еще работают с многопотоком, кроме удаления.
(будьте добры, не 4 словами)

п.с. видел кто-то писал "присваивать статусы". Как в этом случае перемешать список привязанного xlsx, чтобы это выполнилось один раз и дальнейшие запуски инстансов не перемешивали все каждый раз?

я логику так представляю: 1 раз перемешивается список, дальше инстансы берут по очереди по 1 акку в работу и ставят в столбце статус "в работе" (если по завершению ставить статус "Завершено" у акка, то как при запуске проекта стереть все "Завершено", чтобы они снова в работу пошли?)

п.с.с если нужны локи, напишите, пож, как их ставить и куда
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
Разобрался с работой в многопотоке, когда берется строка, удаляется из файла.
Изи.

Надоело каждый раз наполнять файл (по сути одними и теми же данными)

Подскажите основную логику как еще работают с многопотоком, кроме удаления.
(будьте добры, не 4 словами)

п.с. видел кто-то писал "присваивать статусы". Как в этом случае перемешать список привязанного xlsx, чтобы это выполнилось один раз и дальнейшие запуски инстансов не перемешивали все каждый раз?

я логику так представляю: 1 раз перемешивается список, дальше инстансы берут по очереди по 1 акку в работу и ставят в столбце статус "в работе" (если по завершению ставить статус "Завершено" у акка, то как при запуске проекта стереть все "Завершено", чтобы они снова в работу пошли?)

п.с.с если нужны локи, напишите, пож, как их ставить и куда
чем не нравится после удаления строки класть её обратно в конец?
 
  • Спасибо
Реакции: Castaneda

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63
чем не нравится после удаления строки класть её обратно в конец?
нужен рандом.
Как перемешивать разобрался, но не знаю как это делать один раз, чтобы правильно отрабатывало.

п.с. как получить текущее кол-во попыток в задании?
решение из топика 16-го года выдает пустое значение. А в ПМ никак не посмотришь что там, т.к. это тема постера.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
нужен рандом.
Как перемешивать разобрался, но не знаю как это делать один раз, чтобы правильно отрабатывало.

п.с. как получить текущее кол-во попыток в задании?
решение из топика 16-го года выдает пустое значение. А в ПМ никак не посмотришь что там, т.к. это тема постера.
т.е. ты хочешь рандомно строго отработать список, чтобы до конца списка не было повторов? Или повторы не принципиальны?
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63
т.е. ты хочешь рандомно строго отработать список, чтобы до конца списка не было повторов? Или повторы не принципиальны?
ну там список аккаунтов
Зачем один и тот же дергать?
Без повторов
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
ну там список аккаунтов
Зачем один и тот же дергать?
Без повторов
Используй второй список. С первого берёшь рандомную строку с удалением, кладёшь во второй список. Первый список пуст - возвращаешь все значения со второго списка в первый
 
  • Спасибо
Реакции: Castaneda и Sergodjan

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63
Используй второй список. С первого берёшь рандомную строку с удалением, кладёшь во второй список. Первый список пуст - возвращаешь все значения со второго списка в первый
очень даже вариант
THX) делаю
 

all3xpress

Client
Регистрация
06.03.2019
Сообщения
159
Благодарностей
25
Баллы
18
Используй второй список. С первого берёшь рандомную строку с удалением, кладёшь во второй список. Первый список пуст - возвращаешь все значения со второго списка в первый
если два инстанса сделают это?
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63
Используй второй список. С первого берёшь рандомную строку с удалением, кладёшь во второй список. Первый список пуст - возвращаешь все значения со второго списка в первый
аа подожди
у меня в 90% запусков нужно останавливать работу
т.е. практически постоянно будет 2 списка.
Как быть в этом случае?
 

gevolushn

Известная личность
Регистрация
25.03.2019
Сообщения
518
Благодарностей
269
Баллы
63
Может не до конца понял, но что мешает брать данные с файла и заносить их во "временный" список, который привязан к файлу. Данные ваши всегда на месте и можно работать со списком во многопотоке.
По такому принципу и работаю сейчас.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
если два инстанса сделают это?
если упаковать в код правильно - сделают. Когда нужен функционал выше имеющегося стандарта - всегда придётся делать через код для многопоточных проектов
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
аа подожди
у меня в 90% запусков нужно останавливать работу
т.е. практически постоянно будет 2 списка.
Как быть в этом случае?
логика такова, что второй список переносит строки в первый только если первый пустой
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63
логика такова, что второй список переносит строки в первый только если первый пустой
если переливать внутри (SyncObjects.TableSyncer)
и в сам момент перелива запустится другой инстанс, то он словит лок или могут оба запустить перелив одновременно и все пойдет по одному месту\

т.е. я пишу if таблица пустая - переливаем. И другой инстанс ловит if таблица пустая и делает тоже самое либо выпиливается
 

all3xpress

Client
Регистрация
06.03.2019
Сообщения
159
Благодарностей
25
Баллы
18
если упаковать в код правильно - сделают. Когда нужен функционал выше имеющегося стандарта - всегда придётся делать через код для многопоточных проектов
вообще ниче не понял но ладно

у меня какбы есть главный эталон и мютебильный файл из которого удаляют инстанци если взяли строчку, как файл пустой делаю копию из эталона. на 60 потоках проблем не было. а вообще лучше базу юзать для такого.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
если переливать внутри (SyncObjects.TableSyncer)
и в сам момент перелива запустится другой инстанс, то он словит лок или могут оба запустить перелив одновременно и все пойдет по одному месту\

т.е. я пишу if таблица пустая - переливаем. И другой инстанс ловит if таблица пустая и делает тоже самое либо выпиливается
сначала идёт лок, внутри идёт иф. Иф пустой - переливаем. Там же внутри берём строку рандомную
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
вообще ниче не понял но ладно

у меня какбы есть главный эталон и мютебильный файл из которого удаляют инстанци если взяли строчку, как файл пустой делаю копию из эталона. на 60 потоках проблем не было. а вообще лучше базу юзать для такого.
лучше когда лучше. А когда только потому, что база это круто, то не лучше
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63
лучше когда лучше. А когда только потому, что база это круто, то не лучше
как справиться с еб**тым методом работы с таблицей, которая привязана зенновскими методами?
Там 50 строк, а RowCount пишет 100+.
Каждый раз придумывает себе новую цифру.
Обновлял, привязывал заново, пробовал другой файл, чистил кнопкой Del...
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
как справиться с еб**тым методом работы с таблицей, которая привязана зенновскими методами?
Там 50 строк, а RowCount пишет 100+.
Каждый раз придумывает себе новую цифру.
Обновлял, привязывал заново, пробовал другой файл, чистил кнопкой Del...
открываешь таблицу в экселе. Начиная с пустой строки выделяешь в низ строк сто. Выделяешь по боковой полосе, а не ячейкам. Потом через пкм удаляешь эти строки
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63
придумал и реализовал способ работы с одной таблицей и рандомом )))
Устанавливаю глобал переменную = количество строк в таблице.
В работу беру рандом от 0 до глобал с удалением и добавление в конец.
Каждый инстанс уменьшает глобал на 1.
Когда глобал == 0, глобал = кол-во строк в таблице.

изи, епта
 
  • Спасибо
Реакции: kompas777 и doc

Deniska

Client
Регистрация
20.07.2016
Сообщения
82
Благодарностей
5
Баллы
8
2 списка
1. Аккаунты
2. Время в unixtime для запуска в работу

Берет акк проверяет время через if если время меньше удаляет акк и работает
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
873
Благодарностей
299
Баллы
63
2 списка
1. Аккаунты
2. Время в unixtime для запуска в работу

Берет акк проверяет время через if если время меньше удаляет акк и работает
Ни**я не понял, но очень интересно.
Можешь кодом или шаблоном скинуть?
 

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