Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

paralléliser un traitement

3 réponses
Avatar
programmation
Bonjour,
J'ai une demande et j'ai besoin de vos aides. En r=E9alit=E9, J'ai fichier
XML "input.xml" de taille volumineux. Pour lire ce fichier, j'ai
utilis=E9 la fonction 'lire_fichier(nom de fichier)'.
Dans mon cas, je dois d=E9composer ce fichier xml en plusieurs fichiers
XML selon des crit=E8res bien d=E9finis.
Supposons que N est le nombre de ces fichiers d=E9compos=E9s.

Je vais faire le m=EAme traitement X pour chacun de ces N fichiers

Voici une partie de code:

for(i=3D1;i <=3D N;i++)
{

sprintf(tmp,"input%d",i);
lire_fichier(tmp);
//le m=EAme traitement X
..........
............
}



J'ai test=E9 ce code sur ma machine alors ceci prendre beaucoup de
temps.

Mon but est d'avoir le temps d'ex=E9cution le moins possible.

Est ce que c'est possible d'avoir un temps plus longue si on a
travaille sur les N fichiers au lieu de travailler sur un seul fichier
ou bien ceci d=E9pend d'autres facteurs?

Dans mon cas, est ce que le m=E9canisme de parall=E9lisme est possible ?
c'est =E0 dire on ex=E9cute chaque traitement sur une machine portant un
fichier et donc on va utiliser N machines ?
C'est =E0 dire on lance le traitement en m=EAme temps. Mais, ceci garantie
que on va obtenir le r=E9sultat en un temps le moins possible ?

Que proposez vous ?

Merci.

3 réponses

Avatar
marc
On 30 oct, 11:34, programmation wrote:
....
Dans mon cas, est ce que le mécanisme de parallélisme est possible ?
c'est à dire on exécute chaque traitement sur une machine portant un
fichier et donc on va utiliser N machines ?
C'est à dire on lance le traitement en même temps. Mais, ceci garanti e
que on va obtenir le résultat en un temps le moins possible ?



Pourquoi "N machines" ?
Fais du multi-threading (n threads)
Avatar
programmation
> Pourquoi "N machines" ?
Fais du multi-threading (n threads)




Bonjour,

J'ai un fichier bien défini X et N fichiers Y de même format.

A chaque fois je compare le fichier X avec un de N fichiers. Donc j'ai
N comparaisons.

le but de comparaison est chercher les lignes qui existent dans X et
qui n'existent pas dans Y

Le principe de comparaison entre les deux fichiers X et Y:
on lit ligne par ligne de fichier X et on parcoure tout le fichier Y
s'il n'existe pas cette ligne dans Y alors on affiche cette ligne
etc ...

Voici un pseudo code :

<code type="c">
for(i=1;i<=N;i++)
while(fgets(s,100,X))
while(fgets(s,100,Y[i]))
//chercher les lignes qui existent dans X et qui n'existent pas dans Y

</code>

On a ici le même traitement :
chercher les lignes qui existent dans X et qui n'existent pas dans Y

Que proposez vous ?

C'est quoi le multi-threading (n threads) et comment adapter ceci à
mon cas ?

Merci.
Avatar
Christian ASTOR
On 31 oct, 17:39, programmation wrote:
C'est quoi le  multi-threading



1er lien :
http://msdn.microsoft.com/en-us/library/ms810438.aspx