Добрый день.
Вопрос по 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. Первой позицией передавать значение итератора а потом этот список уже разбирать в функции.
spoilerfrom 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")