Проблема с памятью при параллельной обработке при использовании uproot 4, этого не было в uproot 3

#python #uproot

#python #выкорчевать

Вопрос:

У меня есть этот корневой файл, который доступен на Google Диске по этой ссылке, и когда я преобразовывал его в массивы в root 3 с помощью параллельной обработки, это занимало меньше времени и памяти. Код, который я использовал, был чем-то вроде

 from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(8)

branches = pd.DataFrame.from_dict(uproot.open('' file_with_path '')['' tree_name ''].arrays(namedecode='utf-8', executor = executor))
 

Но теперь он потребляет всю мою память в root 4, возможно, я делаю это неправильно. Не могли бы вы взглянуть на это? Также это не так быстро, как раньше.

 from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(8)

input_tree = uproot.open('/path/10k_events_PFSimplePlainTree.root:PlainTree', decompression_executor=executor)

branches = input_tree.arrays(library='pd', decompression_executor=executor)
 

Мы с @jpivarski обсуждали это в выпуске по этой ссылке, и он предположил, что это может быть всего на 10% больше памяти, но для меня это больше, чем 10%. Может быть на 60-80% больше

Комментарии:

1. Уточнение: я сказал, что, насколько я знаю, это может быть небольшая разница, например, 10%. Я не говорил, что это или должно быть 10%. Утверждение касалось моего недостатка знаний.

2. @JimPivarski извините, что процитировал вас с действительно плохими словами. Я собираюсь отредактировать сообщение