Я тестировал, как использовать dask (кластер с 20 ядрами), и меня удивляет скорость, которую я получаю при вызове функции len vs slicing через loc.
import dask.dataframe as dd
from dask.distributed import Client
client = Client('192.168.1.220:8786')
log = pd.read_csv('800000test', sep='\t')
logd = dd.from_pandas(log,npartitions=20)
#This is the code than runs slowly
#(2.9 seconds whilst I would expect no more than a few hundred millisencods)
print(len(logd))
#Instead this code is actually running almost 20 times faster than pandas
logd.loc[:'Host'].count().compute()
Любые идеи, почему это может произойти? Для меня не важно, что len работает быстро, но я чувствую, что, не понимая этого поведения, я кое-что не понимаю о библиотеке.
Все зеленые прямоугольники соответствуют "from_pandas", в то время как в этой статье Мэтью Роклин http://matthewrocklin.com/blog/work/2017/01/12/dask-dataframes график вызовов выглядит лучше (len_chunk называется, который значительно быстрее и вызовы не кажутся заблокированными и ждут, пока один работник закончит свою задачу, прежде чем запускать другую)