В основном проблема заключается в следующем: у меня есть группа работников, у которых есть функция, предписанная каждому (функция is worker (alist)), и я пытаюсь обрабатывать 35 рабочих одновременно. Каждый рабочий считывает свою строку из файла (по модулю) и должен обрабатывать строку с помощью функции «работник». Я проверил проверку пера и обнаружил, что сырые манипуляции и удаление бесполезных индексов работают на 100% по назначению.Pool Multiprocessing Python
Элемент args функции pool.apply_async не передает список «raw» в него и запускает процесс. Сырье полностью корректно и нормально функционирует, рабочий сам по себе работает нормально, функция pool.apply_async - единственное место, где, похоже, проблема, и я понятия не имею, как ее исправить. Любая помощь, пожалуйста?
Соответствующий код здесь:
NUM_WORKERS=35
f=open("test.csv")
pool=multiprocessing.Pool()
open("final.csv",'w')
for workernumber in range(1, NUM_WORKERS):
for i,line in enumerate(f):
if i==0:
print "Skipping first line" #dont do anything
elif i%workernumber==0:
raw = line.split(',')[0][1:-1].split()
uselessindices=[-2,-3,-4,-5,-6]
counter=0
for ui in uselessindices:
del raw[ui+counter]
counter+=1
print raw
pool.apply_async(worker, args=(raw,))
pool.close()
pool.join()
Почему вы вообще зацикливаетесь на 'workworkumber'? Вы действительно хотите, чтобы первый работник обрабатывал каждую строку в файле, а второй - для обработки каждой другой строки? Я не вижу причин ожидать, что обработка строки более одного раза будет иметь какую-то выгоду, но, возможно, я что-то упустил. Или вы действительно хотите, чтобы каждая строка обрабатывалась один раз? Если это так, внешний цикл совершенно бессмыслен (как и условие на 'elif'). – Blckknght
35 много процессоров. – 101
@ 101 Я использовал произвольное число для num_workers. Есть 16 процессоров, но операция не требует интенсивного процессора, ее просто нужно сделать с помощью shit ton рабочих и скомпилировать. Я новичок в многопроцессорной работе и пытаюсь проложить свой путь через документацию. Есть ли способ сделать это лучше? – furby559