Прежде всего, спасибо всем, кто откликнулся.Так сэкономил столько времени в моих проектах программирования.Я ценю это!
Мой код перебирает огромный массив данных.Вот пример кода:
#len(df)=1,000,000
for i in range(1,len(df))
df.iloc[i,1]=df.iloc[i,1]*40
ПРИМЕЧАНИЕ *: мой код делает что-то гораздо более сложное.Вопрос такой же, но я боялся размещать строки и строки кода.По сути, я хочу знать, как обрабатывать несколько частей фрагмента данных, используя это в качестве примера.
Я хочу разделить процессы, используя multiprocessing
.Я хочу, чтобы работник выполнял задачи 1-500 000, а следующий - 500 001-1 000 000.Вот моя мысль:
from multiprocessing import Pool
def jobs(jobstart,jobend):
#len(df)=1,000,000
for i in range(jobstart,jobend):
df.iloc[i,1]=df.iloc[i,1]*40
if __name__ == '__main__':
p= multiprocessing.Pool(processes=2)
results=p.starmap(jobs, [(1,500000),(500001,1000000)])
p.close()
print(results)
Почему это не работает?Ошибка:
File "C:/Files for Local/fisher_scrapper/frappy.py.py", line 238, in <module>
results=p.starmap(jobs, [(0,50),(51,100)])
File "C:\Users\TLCLA\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py", line 298, in starmap
return self._map_async(func, iterable, starmapstar, chunksize).get()
File "C:\Users\TLCLA\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py", line 683, in get
raise self._value
JSONDecodeError: Expecting value