Division avec math.ceil() Arrondir supérieur
Bonjour à vous,
J'ai jamais eu de problème auparavant concernant ce magnifique module.
Ce n'est pas la première fois que je l'utilise.
Je ne suis pas fou, du moins je crois.
J'essaye de diviser le nombre de fichiers dans un répertoire, par le nombre de processeurs que je possèdes.
À l'aide du module mpi4py.
mais ce n'est pas important. ( je crois)
J'ai admettons 76 fichier pour 20 cores.
normallement 76/20 = 3.8 = 4
avec math.ceil(len(nb_files) / nb_cores )
ou round(len(nb_files) / nb_cores )
J'obtiens toujours 3 ou 3.000000
Même si je met tout mes variables en float() ou int()
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
# -*- coding: utf-8 -*-
#nombre_fichier_par_cores.py
import os
import math
#Nom du dossier
mydir = os.getcwd()
nb_files_sans_func = 76
#Fonction lister les fichiers
def list_files(dossier):
path, dirs, files = os.walk(dossier).next()
return files
if os.path.isdir(mydir):
size = 20 #Admettons que je suis dans MPI et que j'ai 20 cores
all_files = list_files(mydir) # Liste de tous les fichiers
nb_files = len(all_files) # Ce qui me donne 76 fichiers
#Les testes
totale_par_cores = math.ceil(nb_files / size) #Me donne 3
totale_par_cores2 = round(nb_files / size ) # Donne 3
total = float()
total = math.ceil(len(all_files) / size ) #Me donne 3.00000
print size # 20
print nb_files # 76 ( pour les tests prennez nb_files_sans_func )
print nb_files / size # 3 .... jamais 3.8
print totale_par_cores # si plus de fichier que de cores
print totale_par_cores2 # pareil
print total
print'-------'
print nb_files_sans_func / size
print math.ceil(nb_files_sans_func / size)
#Je comprend plus rien, j'ai jamais eu de problème avant.
else:
print'nothing' |
Avec tous la documentations concernant ce module, je me suis presque demandé si c'étais mon python2.7 qui était perdu. J'ai donc essayer sur deux machines, toujours le même résultat.
Merci pour votre aide.