Je travaille sur une araignée multi-processus en Python. Il devrait commencer à gratter une page pour les liens et travailler à partir de là. Plus précisément, la page de niveau supérieur contient une liste de catégories, les événements de pages de second niveau dans ces catégories et les pages finales de participants aux événements de troisième niveau. Je ne peux pas prédire combien de catégories, d'événements ou de participants il y aura. Je suis un peu perplexe quant à la meilleure façon de concevoir une telle araignée, et en particulier, comment savoir quand il est fini d'explorer (il devrait continuer jusqu'à ce qu'il ait découvert et récupéré chaque page pertinente) .Conception d'une araignée multi-processus en Python
Idéalement, la première éraflure serait synchrone, et tout le reste async pour maximiser l'analyse parallèle et l'ajout à la base de données, mais je suis coincé sur la façon de comprendre quand l'exploration est terminée.
Comment suggéreriez-vous que je structure l'araignée, en termes de processus parallèles et en particulier le problème ci-dessus?
Hmm. Comment saurais-je si la file d'attente est vide parce que tout est fini, ou parce qu'il y a, par exemple, moins de catégories que les processus de travail, ce qui vide la file d'attente même si elle est loin d'être terminée? – wbg
Désolé, j'ai posté trop tôt. J'ai réfléchi plus sur ce que vous avez dit, et multiprocessing.JoinableQueue.task_done() et .join() sont exactement ce que je cherche. Je dois juste être sûr d'ajouter de nouvelles tâches à la file d'attente avant d'appeler task_done(). Merci! – wbg