@Darkzenon

Как получить порядковый номер процесса?

Добрый день.
Вопрос по multiprocessing и tqdm в python на windows.

Код работает, но есть 2 проблемы.
1 - tqdm нужно задавать номер позиции иначе вместо фиксированных прогрессбаров получается полоса прокрутки, просто добавляются новые строки.
2 - по мультипроцесингу. как получить порядковый номер процесса, чтобы его можно было вставить в номер позиции tqdm

идея с генератором
def gen():
	a=[1,2,3,4,5,6,7,8,9,10]
	yield a


не работает, возвращается весь генератор.
Единственная идея, которая не очень нравится, это в список передаваемы в map. Первой позицией передавать значение итератора а потом этот список уже разбирать в функции.

spoiler
from multiprocessing import Pool
from multiprocessing.pool import ThreadPool

def GetData(part_hrefs):
    df = []
    for item in tqdm(part_hrefs, position=2, desc="h", leave=False):

    return(df)



def main():
    with open('file.txt', 'r') as file:
        TotalLinks =file.readlines()

    parts = [round(len(TotalLinks)/10)*i for i in range(10)]
    parts.append(len(TotalLinks))
    names = [TotalLinks[parts[i]:parts[i+1]] for i in range(10)]

    pool = ThreadPool(10)
    l = pool.map(GetData, names)
    itog_data=Reduce_2(l)
    pd.DataFrame.to_csv(itog_data,'output.csv')

if __name__=='__main__':
    print ("start")
    main()
    print ("finish")

  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dkdoter
play dota
Совет по идее с генератором:
Вместо yield a нужно yield from a
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы