Maison  >  Article  >  développement back-end  >  Combien de threads sont appropriés pour un robot d'exploration Python ?

Combien de threads sont appropriés pour un robot d'exploration Python ?

anonymity
anonymityoriginal
2019-06-12 11:19:084187parcourir

Je prévois d'explorer les données d'un site e-commerce récemment. Ne considérons pas l'agence et la distribution. Parlons d'abord d'efficacité (bien sûr, si vous demandez trop vite, vous serez bloqué), passons à cela. le point. Dans des circonstances normales, la première chose à laquelle nous pensons en tant que novices est la boucle for, qui est monothread. Ensuite, nous considérons que la boucle for ouvre directement cinq threads. Le problème est que si une requête URL n'est pas revenue, le reste attendra simplement. Il est inutile d'utiliser plusieurs threads de cette manière.

Combien de threads sont appropriés pour un robot d'exploration Python ?

Considérations sur les performances

Nous sommes sûrs d'utiliser le multi-threading ou le multi-processus, alors devrions-nous utiliser le multi-threading ou multi-processus ? Certaines personnes ont certains préjugés contre le multi-traitement et le multi-threading, simplement à cause du verrouillage GIL de python. Parlons de la différence entre ces deux choses.

Multi-threading

Généralement, lorsque nous démarrons un fichier .py, cela équivaut à démarrer un processus. Il y a un thread qui fonctionne par défaut dans un processus. Nous utilisons de nombreux moyens de Threading permettant plusieurs threads dans un processus.

Mais voici la question : Pourquoi utiliser le multi-threading ?

Je sais que lorsqu'on démarre un processus, il faut créer un espace mémoire, ce qui équivaut à une maison. Nous devons travailler dans cette maison. Vous pouvez considérer une personne comme un fil. Votre maison Il y a une différence entre un espace pour 10 personnes et un espace pour 20 personnes dans des circonstances normales, car nous savons que les threads peuvent communiquer par défaut (les processus ne peuvent pas communiquer par défaut, mais cela peut être réalisé grâce à la technologie), comme les tuyaux ). Le multithreading peut être utilisé pour garantir l'exactitude des données calculées, de sorte qu'un verrou GIL apparaît pour garantir qu'un seul thread peut calculer en même temps.

Vous pouvez en gros comprendre le verrouillage GIL car, par exemple, s'il y a un compte à régler dans cette salle, une seule personne peut calculer le compte en même temps, pensez à une question, s'il y en a. 5 personnes sur ce compte, si je peux le calculer clairement, je n'ai besoin que d'une pièce de 10 mètres carrés, alors pourquoi devrais-je embaucher 10 personnes et dépenser 20 mètres carrés ? Ce n’est donc pas que plus vous ouvrez de discussions, mieux c’est. Mais, mais, mais, veuillez noter que tout le monde n'a pas besoin d'utiliser son cerveau (calcul du CPU) pour calculer ce compte. Vous pouvez faire d'autres choses (par exemple, 5 personnes se partagent le travail et chacune calcule une partie), comme chacune. enregistrer les résultats après avoir terminé le calcul. Sur le grand livre pour un rapprochement ultérieur. Dans ce cas, chacun a son propre grand livre, donc le multithreading est adapté aux opérations d'E/S. N'oubliez pas que même s'il convient aux opérations d'E/S, cela ne signifie pas. que plus il y a de monde, mieux c'est, donc ceci La quantité doit encore être déterminée en fonction de la situation réelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn