Расчеты Dask требуют много времени для инициализации в ноутбуке Jupyter

Извините, но все это похоже на сложный синтаксис, чтобы скрыть несколько строк кода.

Почему бы не это:

/**

  Read line from a CSV file

  @param[in] fp file pointer to open file
  @param[in] vls reference to vector of strings to hold next line

  */
void readCSV( FILE *fp, std::vector<std::string>& vls )
{
    vls.clear();
    if( ! fp )
        return;
    char buf[10000];
    if( ! fgets( buf,999,fp) )
        return;
    std::string s = buf;
    int p,q;
    q = -1;
    // loop over columns
    while( 1 ) {
        p = q;
        q = s.find_first_of(",\n",p+1);
        if( q == -1 ) 
            break;
        vls.push_back( s.substr(p+1,q-p-1) );
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<std::string> vls;
    FILE * fp = fopen( argv[1], "r" );
    if( ! fp )
        return 1;
    readCSV( fp, vls );
    readCSV( fp, vls );
    readCSV( fp, vls );
    std::cout << "row 3, col 4 is " << vls[3].c_str() << "\n";

    return 0;
}
0
задан James McKeown 16 January 2019 в 18:09
поделиться

1 ответ

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

Скорее всего, уходит время на сканирование всей информации о файлах для множества файлов на S3. Dask должен перечислить все эти файлы, чтобы выяснить, насколько они велики, и назначить блоки для чтения, которые требуют много медленных HTTP-вызовов.

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

Короче говоря, если вы хотите оптимизировать скорость передачи данных, вам лучше разделить входящие данные на гораздо большие куски. Вы увидите некоторые рекомендации по размерам порций данных порядка 100 МБ.

0
ответ дан mdurant 16 January 2019 в 18:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: