Код, который вы показываете в вопросе, вероятно, вообще не занимает много времени, потому что вы на самом деле ничего не загружаете, а просто настраиваете рецепт на работу.Сколько времени это займет, будет зависеть от заданного вами размера фрагмента.
Существуют два основных узких места, которые необходимо учитывать для фактической загрузки:
- получение данных с диска в память, передача необработанных данных черезинтерфейс с одним диском,
- синтаксический анализ этих данных в оперативной памяти
С первым вы мало что можете сделать, если находитесь на локальном диске, и вы ожидаетеэто будет небольшая доля.
Последний может пострадать от GIL, даже если dask будет выполняться в нескольких потоках по умолчанию (поэтому может показаться, что используется только один поток).Вы бы хорошо прочитали документацию по dask о различных планировщиках и должны попытаться использовать распределенный планировщик, даже если вы находитесь на одной машине со смесью потоков и процессов.
Наконец, вы, вероятно, невообще не хочу «загружать» данные, но обрабатывать их.Да, вы можете сохранить в памяти Dask, если хотите (dask.persist
, как ни странно), но, пожалуйста, не используйте много рабочих для загрузки данных, просто чтобы потом поместить их в фрейм данных Pandas в вашей памяти процесса клиента.