• # Éléments de réponses

    Posté par (site web personnel) . En réponse au message Recherche d'une liste dans une liste. Évalué à 6.

    • Pas de parenthèse pour les return.
    • p.name().find(proc)!=-1 serait plus pythonique avec un simple proc in p.name()
    • Si tu gardes la version 1, tu peux écrire isRunning() de manière plus pythonique là encore:
    def isRunning(proc):
     pname = proc.name()
     return any(searched in pname for searched in procs)

    Au final tes 2 versions se valent pour un petit script ; après si tu écris beaucoup de code, tu voudras peut-être limiter le code boiler plate. Mais ça dépend de la tête de ton code et de ton imagination.
    Si tu passes ton temps à itérer sur les processus dont tu filtres le nom, tu pourrais par exemple faire un générateur:

    def filtered_procs(*name_parts):
     for p in psutil.process_iter():
     pname = p.name()
     if any(name_part in pname for name_part in name_parts):
     yield p
    for proc in filtered_procs('gnome', 'chrom'):
     print(p.name(), p.pid)

    Et si tu veux faire du beaucoup de filtrage et selon des critères variés, tu pourrais imaginer une API qui permettrait d'écrire des choses comme (inspiration Django):

    for proc in ProcessusSelector().filter(user='root').filter(Q(name__contains='gnome')|Q(name__contains='chrom')):
     print(p.name(), p.pid)