Parce que ce processus est une opération nécessitant beaucoup de processeur et de mémoire, et non une opération d'E/S de disque élevée. En d'autres termes, ce processus teste les performances du processeur. Et nous savons que les ordinateurs ne disposent pas de véritables multi-processus ou multi-threads, ils sont tous simulés via la planification du processeur. Ainsi, pour les opérations gourmandes en CPU, il est préférable d'utiliser une méthode mono-processus ou mono-thread (le multicœur peut être considéré comme augmentant). C'est la méthode la plus efficace, car elle évite la consommation causée par les va-et-vient). entre les threads ou les processus.
Vous pouvez vous référer à l'architecture de Nginx pour cela. La charge élevée de Nginx s'effectue également en un seul processus.
Le multi-threading de CPython n'est pas un « vrai » multi-threading (voir GIL pour plus de détails, si vous ne changez pas de langage, la solution est de faire du multi-processus, avec un équilibrage de charge (haproxy et autres) dans. devant.
Il existe plusieurs modèles pour gérer les connexions simultanées. Le multithreading est un type, et les E/S non bloquantes + multiplexage représentés par epoll sont également un type. Tant qu'il est utilisé correctement, la lecture/écriture après une nouvelle connexion ne bloquera pas, même pendant une courte période de temps.
Les conducteurs vétérans des premières années ont lu The C10K Problem de Dan Kegel, qui explique divers modèles de traitement simultané. Si votre anglais est passable, je vous recommande quand même de le lire. Oh, en passant, si vous apprenez des concepts qui n'impliquent pas diverses améliorations techniques apportées au système réel pour gérer une grande concurrence, alors la « programmation réseau Unix » de Richard Stevens l'explique plus clairement, et la traduction chinoise est également plus facile à comprendre. lire. .
Parce que ce processus est une opération nécessitant beaucoup de processeur et de mémoire, et non une opération d'E/S de disque élevée. En d'autres termes, ce processus teste les performances du processeur. Et nous savons que les ordinateurs ne disposent pas de véritables multi-processus ou multi-threads, ils sont tous simulés via la planification du processeur. Ainsi, pour les opérations gourmandes en CPU, il est préférable d'utiliser une méthode mono-processus ou mono-thread (le multicœur peut être considéré comme augmentant). C'est la méthode la plus efficace, car elle évite la consommation causée par les va-et-vient). entre les threads ou les processus.
Vous pouvez vous référer à l'architecture de Nginx pour cela. La charge élevée de Nginx s'effectue également en un seul processus.
Le multi-threading de CPython n'est pas un « vrai » multi-threading (voir GIL pour plus de détails, si vous ne changez pas de langage, la solution est de faire du multi-processus, avec un équilibrage de charge (haproxy et autres) dans. devant.
Il existe plusieurs modèles pour gérer les connexions simultanées. Le multithreading est un type, et les E/S non bloquantes + multiplexage représentés par epoll sont également un type. Tant qu'il est utilisé correctement, la lecture/écriture après une nouvelle connexion ne bloquera pas, même pendant une courte période de temps.
Les conducteurs vétérans des premières années ont lu The C10K Problem de Dan Kegel, qui explique divers modèles de traitement simultané. Si votre anglais est passable, je vous recommande quand même de le lire. Oh, en passant, si vous apprenez des concepts qui n'impliquent pas diverses améliorations techniques apportées au système réel pour gérer une grande concurrence, alors la « programmation réseau Unix » de Richard Stevens l'explique plus clairement, et la traduction chinoise est également plus facile à comprendre. lire. .