Pandas ThreadPoolexeCutor с 16 работниками, которые приводят к отсутствию или нет DataFrames, в то время как 1 работник Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pandas ThreadPoolexeCutor с 16 работниками, которые приводят к отсутствию или нет DataFrames, в то время как 1 работник

Сообщение Anonymous »

Я работаю над реальным конвейером по обработке данных, где я обрабатываю от 300 до 500 файлов Excel в день. Каждый файл читается, ворвано в pandas.dataframe, и в конце все, что получаются в результате данных, объединяются в один. (ThreadPoolexeCutor (max_workers = 16)), я сталкиваюсь с основными проблемами: < /p>
Только около 20–50 файлов (из ~ 300). Получите успешно обработанную и согласну. 'Nonetype' < /p>
< /blockquote>
Некоторые потоки создают пустые данные о данных, даже если исходные файлы действительны. Каждый поток обрабатывает свой собственный файл и возвращает новый DataFrame.import pandas as pd
from concurrent.futures import ThreadPoolExecutor, as_completed

def process_file(file_path):
try:
df = pd.read_excel(file_path)
df['date'] = pd.to_datetime(df['date'], errors='coerce')
df['foo'] = df['foo'].astype(str).str.upper()
if df.empty:
print(f"[WARN] Empty DataFrame from: {file_path}")
return df
except Exception as e:
print(f"[ERROR] Failed to process {file_path}: {e}")
return None

def process_files_in_parallel(file_list, max_workers=16):
results = []
failed_files = []

with ThreadPoolExecutor(max_workers=max_workers) as executor:
futures = {executor.submit(process_file, file): file for file in file_list}

for future in as_completed(futures):
file = futures[future]
try:
df = future.result()
if df is not None and not df.empty:
results.append(df)
else:
failed_files.append(file)
except Exception as e:
print(f"[EXCEPTION] {file}: {e}")
failed_files.append(file)

print(f"[SUMMARY] Successfully processed: {len(results)} files")
print(f"[SUMMARY] Failed or empty: {len(failed_files)} files")

if not results:
raise ValueError("No valid dataframes to concatenate.")

final_df = pd.concat(results, ignore_index=True)
return final_df
< /code>
Пример ошибка[WARN] Empty DataFrame from: file_24.xlsx
[ERROR] Failed to process file_35.xlsx: [Errno 2] No such file or directory
[EXCEPTION] file_58.xlsx: cannot concatenate object of type ''
...
[SUMMARY] Successfully processed: 23 files
[SUMMARY] Failed or empty: 277 files
< /code>
Что я подтвердил: < /p>

Каждый поток работает в совершенно независимых файлах. Нет общего состояния. < /P>
< /li>
Все файлы существуют и являются действительными файлами Excel. < /P>
< /li>
При использовании одной и той же логики с Max_workers = 1, он постоянно преуспевает. Рабочие. /> < /li>
Слишком много одновременных считываний на диске? < /p>
< /li>
< /ul>

Вопросы: < /p>

Почему ничто не возвращает или не обращает на нет. DataFrames?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... rames-whil
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Создайте цикл для перехода через 2 DataFrames и отформатируйте DataFrames
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Создайте цикл для цикла через 2 DataFrames и отформатировать DataFrames [Duplicate]
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • OpenGL ES, слишком раннее заполнение VBO и IBO приводит к отсутствию буферов?
    Гость » » в форуме C++
    0 Ответы
    45 Просмотры
    Последнее сообщение Гость
  • OpenGL ES, слишком раннее заполнение VBO и IBO приводит к отсутствию буферов?
    Гость » » в форуме C++
    0 Ответы
    37 Просмотры
    Последнее сообщение Гость
  • Растворение полигонов в Python приводит к отсутствию некоторых полигонов.
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»