La fonction ne s'exécute que si on l'appelle, je ne comprend pas ta question...
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Merci pour ta réponse Fred, ce n'est pas mon projet mais l'on m'a chargé de me mettre dessus.
J'exécute un main.py avec un paramètre.
Dans le main : l'appel à recovering_data() se fait.
Cette fonction est connue par un import.
Par contre, que ce soit en debug ou avec des traces : je vois que cette fonction est exécutée avant le main, un peu comme si elle l'était via l'import.
Si j'écris ici, c'est qu'il y a un mécanisme qui m'échappe.
Peux tu montrer une partie de ton code où tu as le problème.
Même si tu importes la fonction, tant qu'elle n'est pas appelée, la fonction ne sera pas exécutée. Et si tu l'exécutes, c'est que tu l'appelles et que ça ne peut être que ta décision de le faire ou pas.
C'est donc toujours pas plus clair... le code aidera à comprendre je pense.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Si j'écris ici, c'est qu'il y a un mécanisme qui m'échappe.
Moi je ne vois pas comment vous pouvez affirmer "je vois que cette fonction est exécutée avant le main, un peu comme si elle l'était via l'import" sans avoir l'idée de le vérifier.
C'est pas si compliqué de lancer l'interpréteur python pour y taper "import module" et voir ce qu'il se passe. Pour le reste, s'il ne vous est pas possible de lire le code pour trouver où la fonction est appelée, sauf à poster le code, on ne peut rien pour vous.
from pytictoc import TicToc
from utils import stock_data_loader as SDL
from utils.gauge_arg import gauge_arg
def main():
t = TicToc()
t.tic() # Start timer
# Get and fix the gauge parameter
import sys
args = sys.argv[1:]
if len(args) == 2 and args[0] == '-gauge':
gauge_arg.value = int(args[1])
print(f'Gauge value in main ---> {gauge_arg.value}')
date = [2023, 6, 30, 0, 0, 0]
print('Loading stock data...')
stock_data = SDL.convertSTRUCTtoDF(SDL.recovering_data(), date)
print('Stock data loaded\n')
Dans la fonction recovering_data(), j'ai ajouté une ligne au tout début :
print(f'Value in recovering_data ---> {gauge_arg.value}')
Dans ses imports :
import numpy as np
import pandas as pd
from utils.gauge_arg import gauge_arg
Le code de recovering_data() ne donnerais de plus (il récupère des données dans de fichiers via ftp...)
Sur la console :
Value in recovering_data ---> -1
Value in main ---> 0
Loading debris data...
Value in recovering_data ---> 0
Debris data loaded
La fonction recovering_data() est appelée deux fois, quelle pourrait-être la cause de ce premier appel ?
EDIT :
HAHAAAAAA... je suis complètement désolé.
J'ai suivi l'idée de mps, de faire des imports dans une console Python et... je dois avouer que j'ai honte.
Il un :
if __name__ == '__main__':
dans un fichier importé
avec une fonction qui me pourri les temps de traitement :
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)