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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.