Мой многопроцессорный код dask для применения двух разных лямбда-функций применения отлично работает на Mac, но не может работать на сервере Windows 7. Я могу запустить код с многопоточностью в Windows 7, но он очень медленный. Когда я пробую процессы планировщика на сервере Windows 7, загрузка ЦП на всех ядрах достигает 100%, и сервер зависает.
Я могу запустить приведенный ниже код в Windows, используя scheduler = 'threads'
или указав num_workers
, но этокажется, не задействовать все ядра. С num_workers или многопоточностью на Mac это намного медленнее, чем scheduler='multiprocessing'
.
Нужен ли какой-то дополнительный код для Windows, чтобы не перегружать ядра / рабочих?
import pandas as pd
import dask.dataframe as ddf
import multiprocessing
daskdf = ddf.from_pandas(mypandasdataframe, npartitions=4*multiprocessing.cpu_count())
def removecw(df):
for word in mylist:
df['A'] = df['A'].apply(lambda x: re.sub(r'\b{}$'.format(re.escape(word)), '', x))
return df
daskdf = daskdf.map_partitions(removecw, meta = daskdf)
daskdf = daskdf.compute(scheduler='processes')
daskdf.to_csv('outputfilename')
На моем Mac я могу запустить код с ожидаемым результатом (удалив общие слова из конца строк в столбце A). Когда я пробую процессы планировщика на сервере Windows 7, загрузка ЦП на всех ядрах достигает 100%, и сервер зависает.