- Chat gpt lent
- Chatgpt le fichier est trop volumineux - Meilleures réponses
- Le fichier est trop volumineux chatgpt - Meilleures réponses
- Coco chat - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Pc lent - Guide
- Chat engine - Télécharger - Outils Internet
- Chat gpt gratuit - Télécharger - Outils Internet
7 réponses
Les IA ne sont pas Intelligentes comme on le pense. J'ai fait des tests avec Google Gemini. Certains résultats étaient extraordinaires et d'autres affreux.
Ça dépend de ce qu'elles ont dans leur base de données.
Les codes Python de ChatGPT ne sont pas plus difficiles (ou faciles) à comprendre que les codes Python générés par un humain.
Et tu t'attends à quoi comme performance avec des "centaines" de fichiers contenant plus de 100000 éléments?
Comme l'a dit @mariam-j, il te faudrait un langage compilé tel que C, C++ ou Rust (à condition de les connaître).
Et ça dépend de la complexité de la méthode utilisée. Peut-être qu'un cours en algorithmique pourrait aider.
Merci pour ces infos PierrotLeFou, je vais me renseigner sur ce que c'est que le C,C++ et le Rust, car j'en ai déja entendu parler. mon disque dur externe sur laquel se trouve tous les fichier est un HDD donc encore plus lent.
Mais les code que le chat gpt me propose, m'effectue 100000 fichiers en 9h, j'aurais pu accepter en 3h ou 4h mais 9h ça fait beaucoup beaucoup.
En tout cas merci, je vais me renseigner.
Je n'ai pas analysé ton code mais j'ai des doutes sur la pertinence du threading.
Tous tes fichiers sont sur le même HDD et, à ce que je sache, il n'y a qu'un seul accès au disque.
J'ai déjà travaillé sur un système multi-users où le système gérait de façon spéciale les accès au disque.
Il savait où se trouvaient les têtes de lecture et essayais de satisfaire la requête la plus proche de la position courante.
Il y avait un système de priorité qui empêchait qu'une requête reste prise dans la file d'attente.
Mais dans ton cas, sur les nouveaux systèmes, on ne fait plus ça.
On peut supposer (...) que les secteurs associés à un fichier donné sont assez proches les uns des autres.
Je me demande donc si un traitement séquenciel (un fichier après l'autre) ne serait pas plus rapide.
Ne sachant pas exactement ce que veut dire "des centaines" de fichiers, j'ai supposé qu'il y en avait 500.
J'ai supposé qu'il y avait bien 100000 entrées sur chaque fichier.
Et 9 heures donnent 32400 secondes.
J'arrive à la conclusion qu'il faut 648 microsecondes par entrée. Même en Python on fait mieux.
qu'est ce que je peux demander au chat IA? pour qu'il puisse améliorer mon code python? car 100000 fichier il me le fais en 38521 secondes. presque 11h donc je suis dépité. je sais plus quoi faire. la je demande au chat gpt de me créé le meme code mais avec Rust, et depuis ce matin c'est à dire 10h je suis avec lui, il m'a fait essayé au moins 20 code et tous erreur. meme pas 1 code bon depuis ce matin...
J'ai remarqué que les IA, surtout Google Gemini pour moi, sont plutôt mauvais avec Rust.
Comme je l'ai dit, les IA ne sont pas vraiment intelligentes.
Elles vont dans leur base de donnée pour trouver du code qui correspond à la demande.
Comme Rust est relativement nouveau, il y a probablement peu de code dans ce langage.
Je suppose que tu ne connais pas très bien la programmation.
En principe, on te suggèrerait d'écrire toi-même ton cod.
Tu peux lui demander de ne pas utiliser le threading pour la raison que j'ai cité.
Les IA font une bonne analyse sémantique.
Tu peux essayer d'expliquer dans tes mots ta configuration. Par ex. que tous tes fichiers sont sur le même HDD et que tu n'as pas d'accès multiples en parallèle.
Il n'y a vraiment aucun code en Rust qui fonctionne?
As-tu essayé en C ou C++? (je pense que tu aurais plus de chance en C++)
Bonjour,
Pour traiter efficacement ton problème (voir #6), tu devrais oublier C/C++/Rust qui ne t'apporteront pas grand chose et t'intéresser plutôt à pandas.
Ensuite je pense que tu n'apprendras rien avec ChatGPT et que ce n'est pas la bonne approche. ChatGPT doit être vu comme un moteur de recherche amélioré. Selon mon expérience ChatGPT répond à peu près correctement sur des problèmes simples (comprendre : des choses que tu aurais pu retrouver avec une recherche google ou sur stackoverflow) mais pas sur des problèmes plus avancé. Combien de fois j'ai vu ChatGPT me raconter des aneries. Et le plus drôle, c'est que quand tu pointes l'erreur à ChatGPT, celui-ci fait son mea culpa. Rapidement il tourne en rond et ne te permet plus d'avancer.
Comme le dit Pierrot une IA n'est PAS intelligente (et j'en sais quelque chose, je bosse en IA). Les spécialistes te diraient que ce n'est qu'un perroquet stochastique, ce qui en langage de tout les jours, signifie que ça ne renvoie qu'une "moyenne" de tout ce que ça a vu en fonction de ce que tu lui demandes et du contexte actuel.
Mon conseil si tu veux progresser et surtout réussir serait :
- renseigne-toi sur les bonnes approches pour résoudre un problème, éventuellement à l'aide de chatGPT,
- apprends à utiliser les solutions techniques qui paraissent pertinente : il y a de nombreuses documentations et tutoriels sur Internet, et dans tous les formats,
- sois critique sur ce que tu lis (en particulier quand c'est quelque chose de généré par une IA)
- Dans ton cas chatGPT t'oriente vers python. Pourquoi ? c'est effectivement le langage communément employé par les data scientists pour des volume de données pas trop astronomiques (ce qui est ton cas).
- Ensuite chatGPT t'oriente vers polars. Pourquoi ?Pour accélerer le chargement des CSV.
- En général "on" utilise pandas (et donc on peut trouver de nombreuses ressources sur Internet qui montrent comment l'utiliser).
- Je n'ai jamais utilisé polars donc je n'ai pas d'avis, c'est peut-être bien mais si j'avais à le faire, je commencerais par vérifier que polars offre bien toutes les primitives dont j'ai besoin.
- D'après ce lien, polars semble plus performant que pandas. Ceci dit ça n'est pas le plus rapide, alors pourquoi polars ?
- essaye toujours de comprendre ce que tu écris (quitte à lire la documentation de chaque fonction appelée dans ton code).
Ensuite spécifie ton problème. Ton message initial et #6 sont trop vagues pour qu'on sache ce que tu veuilles faire.
- Quel est la structure des fichiers csv ?
- Quels sont les paramètres de ton programme ?
- On ne sait même pas ce qu'on est supposés passer en paramètre à ton programme !
- Quel est le résultat attendu ? Comment l'obtient-on ?
- Donner un exemple minimal aiderait à mieux comprendre.
- Quel est le contexte ? As-tu besoin d'interroger plusieurs fois cet ensemble de fichiers, avec des requêtes différents ?
- Si oui, sérialiser les fichiers (voir pickle), voire la dataframe qui en résulte, serait sans doute une bonne idée (tu n'aurais pas à payer le parsing des fichiers csv à chaque fois que tu dois en charger un).
Concernant la remarque de Pierrot #9 sur le threading, je pense que ça se discute. Paralléliser le chargement des données fichier n'a sans doute pas grand intérêt, mais les traiter en a. Si le temps de chargement est relativement négligeable, à mon avis ça ne pose pas vraiment de problème. De plus, gérer plusieurs accès concurrent à un disque dur, c'est le problème du système d'exploitation.
Ensuite, le traitement proposé (lignes 60 à 80) proposé par chatGPT me paraît catastrophique.Sur des dataframe, si on veut un traitement performant, on évite autant que possible les boucles for, sinon on paye le coût "python est un langage interprété" dont il était question dans #1. C'est pourquoi on essaye autant que possible de passer par des opérations vectorisées. Je n'ai jamais utilisé polars (personnellement j'utilise plutôt pandas en général) et jamais on ne ferait une boucle sur chaque case pour sommer une colonne d'une dataframe (voir par exemple pd.sum).
Du coup, certes d'un côté c'est bien d'utiliser polars pour charger des csv plus rapidement, mais si derrière traite le fichier ainsi, ce n'est pas surprenant que ce soit horriblement lent. Le problème, c'est que je n'ai pas personnellement pas compris ce que tu voulais extraire/agréger/calculer donc je ne peux pas te dire quoi regarder.
Bonne chance
@mamiemando
J'ai demandé à Google Gemini de résoudre un problème dont je connaissais la solution.
Il m'a fourni une réponse très peu efficace. Je lui ai soumis la mienne qui l'était beaucoup plus.
Je lui ai fait remarqué la situation.
Chose surprenante, il a compris pourquoi ma solution était meilleure que la sienne.
Je démarre une nouvelle session en lui demandant la même question. Il m'a redonné son ancienne solution, et pas celle pour laquelle il avait soi-disant compris l'intérêt.
Pour moi c'est hors sujet, mais je vais répondre vite fait. Trouver une librairie, un module une classe ou une fonction pour servir un besoin est une question plutôt "simple". On peut d'ailleurs souvent s'en sortir sans IA (une recherche traditionnelle google est souvent suffisante pour trouver une ressource claire style stackoverflow). L'un des nombreux problèmes d'une IA, c'est, comme tu l'as dit, qu'elle peut rapidement tourner en rond sur un problème un peu plus compliqué et/ou répondre quelque chose de faux et donc c'est une béquille relativement fiable, mais pas complètement fiable. Et je ne parle pas des aspects environnementaux.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
Cette question commence à dater, mais bon.
Le jour où IA répondra correctement à la question "quelle était la couleur du cheval Blanc d'Henry IV", je commencerai à lui faire entièrement confiance.
Quand tu poses un question à une IA, assure-toi de la bonne formulation, une IA reste basique.
Si lui demandes un code, précise le langage souhaité.
Si tu ne connais pas les bases de ce langage, commence par lui demander les bases.
Si tu veux du code précis dis-lui de factoriser le code afin d'avoir un résultat plus concis.
N'oublie pas qu'une IA ne voit pas plus loin que le bouton de son nez, elle n'est pas capable d'aller au delà de la troisième question.
Une IA reste stupéfiante dans sa faculté de production. Je lui confie la documentation de mes codes en lui précisant de surtout pas les modifier.
Pour conclure, une IA t'apportera toutes les réponses dont tu as besoin mais encore faut il ne pas aller trop vite en besogne.
Pour chaque tâche, demande-lui quel langage de programmation est le plus apte à répondre à ton problème, quelle base de vocabulaire du langage retenu, et de te fournir une trame des tâches que ton programme devra accomplir.
Il faut que IA reste une aide à l'analyse, et non un pur générateur de code. Le code qu'une IA produit est à terme inexploitable.
Bonjour,
Python n'est pas rapide (langage interprété)
Pour de la rapidité: C, C++ et autres langages compilés.
- C'est un mauvais conseil et en plus c'est à moitié faux, car c'est oublier qu'en python tu peux faire appel à du code compilé (typiquement du C/C++). C'est la raison pour laquelle des librairies comme pandas ou openpyxl permettent en python d'avoir des performances comparable pour traiter de tels fichiers.
- Si tu te lances dans le C/C++, tu te confronteras à d'autres difficultés : apprendre un nouveau langage, de nouveaux concepts dont on ne se préoccupe pas en python, devoir installer un environnement pour compiler du code C/C++, et bien d'autres.
ça dépend aussi de ce que tu fais dans tes fichiers
100 000 ce n'est pas si énorme.
je fais une recherchev ensuite la somme de cette recherche ecrire le resultat de cette somme dans la colonne a laquelle est associé la recherchev, rajouter la date de cette recherchev tout en decalant vers la droite les donné déja dans le fichier et supprimé toute colonne à partir de la colonne 41
import os import polars as pl import time from concurrent.futures import ThreadPoolExecutor, as_completed DOSSIIR_CSV = r"D:\PYTHON\VALEUR REMPLACER ZIP" FICHIER_REBASE = r"D:\PYTHON\REBASE.csv" def get_dates_and_dicts(): df = pl.read_csv(FICHIER_REBASE, separator=";", encoding="utf8-lossy", has_header=False) dicts = [ { str(k).strip().replace('"', '').replace("'", ''): str(v).strip().replace('"', '').replace("'", '') for k, v in zip(df[:, i].to_list(), df[:, i+1].to_list()) } for i in range(0, 19, 3) ] def get_date(col): return str(df[1, col]) if df[1, col] is not None else (str(df[0, col]) if df[0, col] is not None else "Date Non Trouvée") dates = [get_date(i) for i in range(0, 19, 3)] return (*dicts, *dates) def make_unique_columns(columns): seen = {} unique_columns = [] for name in columns: if name in seen: seen[name] += 1 new_name = f"{name}_{seen[name]}" else: seen[name] = 0 new_name = name unique_columns.append(new_name) return unique_columns def traiter_fichier(fichier, *args): dicts = args[:7] dates = args[7:] chemin = os.path.join(DOSSIIR_CSV, fichier) try: if os.path.getsize(chemin) == 0: return f"❌ {fichier} erreur : fichier vide" with open(chemin, 'r', encoding='utf8', errors='ignore') as f: first_line = f.readline() nb_columns = len(first_line.strip().split(";")) unique_names = [f"column_{i}" for i in range(nb_columns)] df = pl.read_csv(chemin, separator=";", has_header=False, new_columns=unique_names, encoding="utf8-lossy").fill_null("") n_rows = df.height if df.width < 85: df = df.hstack([pl.Series([""] * df.height).alias(f"column_{i}") for i in range(df.width, 85)]) rows = df.to_numpy() def calculer_somme(dico, row): total = 0 for j in range(20): key = str(row[j]).strip().replace('"', '').replace("'", '') val = dico.get(key, "") try: total += float(val) if val.replace(".", "", 1).isdigit() else 0 except: total += 0 return str(int(total)) for col_index, dico in zip(range(20, 27), dicts): somme = [calculer_somme(dico, row) for row in rows] for i in range(n_rows): if str(rows[i][col_index]).strip(): for j in range(len(rows[i]) - 1, col_index, -1): rows[i][j] = rows[i][j - 1] rows[i][col_index] = somme[i] final_columns = make_unique_columns([f"column_{i}" for i in range(len(rows[0]))]) df = pl.DataFrame({ col: ["" if val is None else str(val) for val in rows[:, idx]] for idx, col in enumerate(final_columns) }) date_cols = [pl.Series(final_columns[i], [date] + df[1:, i].to_list()) for i, date in zip(range(20, 27), dates)] df = df.with_columns(date_cols) df = df[:, 0:41] df.write_csv(chemin, separator=";", include_header=False, quote_style="never") return f"✅ {fichier} OK" except Exception as e: return f"❌ {fichier} erreur : {e}" if __name__ == "__main__": start = time.time() args = get_dates_and_dicts() total = 0 with ThreadPoolExecutor(max_workers=os.cpu_count()) as executor: futures = [ executor.submit(traiter_fichier, f.name, *args) for f in os.scandir(DOSSIIR_CSV) if f.name.endswith(".csv") and f.is_file() ] for f in as_completed(futures): print(f.result()) total += 1 print(f"\n✅ {total} fichiers traités avec succès !") print(f"⏱️ Temps total d'exécution : {time.time() - start:.2f} secondes")
Salut Lillie3887,
J'ai demandé à Grok3 (l'IA de X) d'analyser ce code, puis je lui ai indiqué "Ce script présente des problèmes de temps d'exécution trop lents. Quelles solutions peux-tu proposer.". Cela donne cet échange :
https://x.com/i/grok/share/ylqcVgTBKX10zUe7KuNv4lPpW
(voir le détail des propositions d'optimisation, dont certaines ont été mentionnées par mamiemando) et dont Grok3 propose le code ou des illustrations d'implémentation.
Grok3 conclut :
Estimation des gains
Vectorisation : Peut réduire le temps de calcul des sommes de 50 à 90 % selon la taille des données.
Optimisation E/S : Réduction de 10 à 30 % du temps de lecture/écriture.
Parallélisme avec ProcessPoolExecutor : Jusqu'à 2x plus rapide si les calculs dominent.
Parquet (si applicable) : Jusqu'à 5x plus rapide pour la lecture/écriture sur de gros fichiers.
Testez chaque optimisation individuellement avec un sous-ensemble de fichiers et profilez pour confirmer les gains. Si vous avez des détails sur la taille des fichiers ou le matériel utilisé, je peux affiner ces recommandations !
Grok3 n'est pas spécialement une IA réputée pour la programmation (Gemini, Claude Sonnet et ChatGPT sont plus réputés pour cela), mais c'est ce que j'avais sous la main, et il donne des pistes à creuser.
En fait c'est une optimisation à l'aveugle car sans un jeu de données et un exemple simplifié des données de départ et du résultat que tu veux atteindre on ne peut pas réellement comprendre ce que tu veux faire ni si ce genre de solutions est approprié. Tu n'as pas non plus répondu aux différentes questions posées par mamiemando et qui sont des questions qu'un professionnel se poserait (dont les réponses constituent des informations que tu n'as probablement pas données à ton IA non plus).
C'est un métier de programmer, ou du moins, cela s'apprend. Un programmeur résout des problèmes avec un algorithme adapté et du code. Pour cela, il doit comprendre le problème. Un programmeur peut ensuite utiliser une IA comme un autre outil pour disposer d'un code simple dont il sait apprécier la pertinence par rapport au problème qu'il a déjà compris. Si tu ne sais pas programmer en Python (ni programmer tout court), ni exprimer ton problème, alors que tu utilises un outil qui devine la nature de ta demande et donne des réponses qu'elle juge les plus statistiquement correctes par rapport à ses données d'entraînement et qui peut, même avec un problème très clairement exprimé, te donner des réponses fausses, incomplètes, approximatives ou non pertinentes (dans l'état de la technologie actuelle), c'est problématique.
Le fait que le code ne soit pas optimisé est un moindre mal, s'il fait ce que tu veux vraiment qu'il fasse... je suppose que tu l'as vérifié.
Si tu ne l'a pas fait, je te recommande fortement de le faire.
Dal