Создать набор партий, а затем создать задачу для каждого элемента в пакете, выполняющего работу (параллельно)
async Task Main()
{
var batchSize = 10;
var batches = logins.Select((item, inx) => new { item, inx })
.GroupBy(x => x.inx / batchSize)
.Select(g => g.Select(x => x.item));
foreach (var batch in batches)
{
var tasks = new List<Task>(batchSize);
foreach (var login in batch)
{
tasks.Add(DoWork());
}
await Task.WhenAll(tasks);
}
}
public async Task DoWork()
{
if (await _serviceLoginInjected.LogIn(login))
{
await _serviceLoginInjected.SendEmails();
await _serviceLoginInjected.CreateFiles();
await _serviceLoginInjected.DoSomethingElse();
}
}
Странно, что Python возвращает значение в виде datetime.timedelta
. Вероятно, он должен вернуть datetime.time
. В любом случае, похоже, что он возвращает прошедшее время с полуночи (при условии, что столбец в таблице - 6:00 вечера). Чтобы преобразовать в datetime.time
, вы можете сделать следующее:
value = datetime.timedelta(0, 64800)
(datetime.datetime.min + value).time()
datetime.datetime.min
и datetime.time ()
, конечно документированный как часть модуля datetime , если вам нужна дополнительная информация.
A datetime.timedelta
, кстати, представляет собой разницу между двумя datetime .datetime
значения. Поэтому, если вы вычтете одно datetime.datetime
из другого, вы получите datetime.timedelta
. И если вы добавите datetime. datetime
с datetime.timedelta
, вы получите datetime.datetime
. Вот как работает приведенный выше код.