J'ai un programme Python qui utilise le module threading et exécute des threads multiples qui exécutent une fonction. Le nombre 8 ci-dessous est le nombre de threads dans le programme mais j'ai besoin de savoir combien de threads mon appareil peut gérer pour exécuter le programme le plus rapidement possible.
Voici la partie concernée de mon programme Python :
for i in range(8):
t = ThreadUrl(q)
t.setDaemon(True)
t.start()
Où q = queue.Queue()
Les données CPU de mon appareil sont (en utilisant la commande lscpu
sous Ubuntu 18.04) :
Architecture: x86_64
CPU op-mode(s): 32 bits, 64 bits
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) par cœur: 2
Cœur(s) par socket: 4
Socket(s): 1
Node(s) NUMA: 1
ID de fabricant: GenuineIntel
Famille CPU: 6
Modèle: 94
Nom du modèle: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Révision: 3
Fréquence du CPU: 1899,473
Fréquence max. CPU: 3500.0000
Fréquence min. CPU: 800.0000
BogoMIPS: 5184,00
Virtualisation: VT-x
Cache L1d : 32K
Cache L1i : 32K
Cache L2 : 256K
Cache L3 : 6144K
CPU(s) node0 NUMA: 0-7
Pouvez-vous me dire combien de threads mon programme peut gérer sans causer de problèmes? Et comment cela est-il calculé s'il vous plaît?
0 votes
"comment cela est-il calculé s'il vous plaît?" - Veuillez clarifier cette question en éditant votre question. Veuillez ne pas répondre avec un commentaire.
1 votes
Vous devez nous parler de chaque aspect de votre programme. Par exemple, si chaque thread utilise 3 Go de RAM et que vous avez 8 Go, votre limite pratique est de 2. Si chaque thread nécessite 10 minutes de téléchargement à 90 % de capacité, votre limite est de 1 car vous n'avez pas assez de vitesse Internet. Vous pourriez également avoir un goulot d'étranglement au niveau du disque dur. Le CPU n'est qu'un aspect parmi tant d'autres à prendre en compte.
0 votes
Vous pouvez trouver de meilleures réponses sur stackoverflow.com, un site similaire à SuperUser, conçu pour les programmeurs. Ce genre de question a certainement déjà été posée, alors faites quelques recherches et vous trouverez probablement ce dont vous avez besoin. SuperUser est plus adapté aux questions liées à l'informatique qu'à la programmation.
0 votes
Comme d'autres l'ont commenté, en supposant que rien d'autre ne fonctionne, vous pouvez exécuter 8 threads Python en même temps sur un processeur 8 cœurs. Si plus de threads Python sont ajoutés, ils voleront simplement du temps du processeur aux threads existants. Il semble que Python ne puisse pas utiliser l'Hyperthreading : stackoverflow.com/questions/49943593/…