IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[debutant] fonction & delay


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 2
    Par défaut [debutant] fonction & delay
    bonjour à tous et a toutes,

    je débute en python et je dois admettre que ce langage est vraiment plaisant à utiliser, mais je débute et un coup de main s'annonce salvateur.
    J'utilise actuellement pyautogui afin d'automatiser certaines taches en laissant mon script prendre le contrôle du clavier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if pyautogui.locateOnScreen('arrow.png') == None:
    j'aimerais coupler cette fonction avec un contrôle de temps exemple suivant : if ma flèche (arrow) est sur l'écran (donc locateOnScreen('arrow.png') == None:) durant 2 secondes complète alors j'exécute la suivante du programme.

    y a-t-il une fonction pour cela ?

    merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut ! Zwi ?? ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import time
    from pyautogui import locateOnScreen
     
     
    def test_presence(end_time):
        while locateOnScreen('arrow.png') != None :
            if time.time() >= end_time:
                return True
        return False
     
    test_presence(time.time()+2)
    Avec ce code ton script ne fera rien d'autres en attendant, si non tu peux rajouter ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import time, threading
    from pyautogui import locateOnScreen
     
    test = False
     
    def test_presence(end_time):
        global test
        while locateOnScreen('arrow.png') != None :
            if time.time() >= end_time:
                test = True
                return
        test = False
     
    time.sleep(2)
    threading.Thread(target=test_presence,args=(time.time()+2,)).start()
     
    time.sleep(2.5)
    print(test)
    Y a sûrement moyen de faire plus performant ! Il semblerait qu'il ne fasse pas énormément de recherche d'images durant ce laps de temps...


    J'ai déniché une solution plus satisfaisante, je te laisse tester la différence, pour ma part je passe de 6 à 14 !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    import time, threading
    from pyautogui import locateOnScreen
    from screen_search import *
     
    test = False
    count_pg = 0
    count_ss = 0
     
    '''Avec pyautogui'''
    def test_presence_pg(end_time):
        global count_pg,test
        while locateOnScreen('arrow.png') != None :
            count_pg+=1
            if time.time() >= end_time:
                test=True
                return
     
    '''Avec screen_search'''
    def test_presence_ss(end_time):
        global count_ss, test
        while search.imagesearch()[0] != -1 :
            count_ss+=1
            if time.time() >= end_time:
                test=True
                return
     
    time.sleep(2)
    threading.Thread(target=test_presence_pg,args=(time.time()+2,)).start()
    time.sleep(2.5)
    print(test,count_pg)
     
    test=False
     
    search = Search("arrow.png")
    threading.Thread(target=test_presence_ss,args=(time.time()+2,)).start()
    time.sleep(2.5)
    print(test,count_ss)


    Sve@r un truc avec un générateur ça serait pas plus mieux ?

    Merci pour lui !
    Dernière modification par Invité ; 18/10/2020 à 19h26.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Citation Envoyé par LeNarvalo Voir le message
    Y a sûrement moyen de faire plus performant ! Il semblerait qu'il ne fasse pas énormément de recherche d'images durant ce laps de temps...
    .locateOnScreen fait une comparaison point à point plus ou moins lazy du contenu de l'image avec un screenshoot qui peut prendre 1 a 2 secondes sur les (grands) écrans modernes.

    Entre 2 screenshoots l'image à le temps d'apparaitre et disparaitre sans qu'on le détecte.

    Il serait plus intéressant de se synchroniser sur autre chose (ou de réduire la portion de l'écran où chercher).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    .locateOnScreen fait une comparaison point à point plus ou moins lazy du contenu de l'image avec un screenshoot qui peut prendre 1 a 2 secondes sur les (grands) écrans modernes.
    1 à 2 secondes carrément ??? Avec mon bout de script il en fait 3 par seconde par exemple et avec screen_search 7 par seconde, sur un écran 1920*1080.
    Mais oui comme tu dis faudrait chercher à optimiser !

    benj9000 C'est pour que faire ton code ? Y a peut-être moyen de faire autrement ?

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    1 à 2 secondes carrément ??? Avec mon bout de script il en fait 3 par seconde par exemple et avec screen_search 7 par seconde, sur un écran 1920*1080.
    C'est ce que dit la documentation.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    C'est ce que dit la documentation.

    - W
    En effet ! Avec un PC des années 2000 alors ! Le mien est pas tout jeune et fait beaucoup mieux.

  7. #7
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 2
    Par défaut
    bonjour et merci pour votre aide,

    mon code n'a absolument pas d'intérêt (j'essai de tester les possibilités de python en laissant mon clavier jouer a un jeu à ma place par pur intérêt de la découverte de python)
    effectivement utiliser la fonction région semble réduire énormément la marge d'erreur.
    merci pour l'essai narvalo cela semble marcher de mon coté, mais une petite fonction défini de la part de python aurai été bien sympa

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Citation Envoyé par benj9000 Voir le message
    mais une petite fonction défini de la part de python aurai été bien sympa
    Si une telle fonction existait, elle serait apportée par pyautogui et, à défaut, "programmer", c'est juste l'écrire par vous même.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [debutant] fonction qui retourne une valeur
    Par arnolpourri dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2006, 09h29
  2. [debutant] Fonction include - suite
    Par pierre50 dans le forum Langage
    Réponses: 3
    Dernier message: 02/06/2006, 15h26
  3. [Système] [debutant] Fonction include
    Par pierre50 dans le forum Langage
    Réponses: 7
    Dernier message: 01/06/2006, 19h00
  4. [debutant]fonction "split" avec une chaine comme m
    Par EpOnYmE187 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/11/2005, 22h46
  5. [debutant] fonction callback
    Par samipate dans le forum Langage
    Réponses: 5
    Dernier message: 09/10/2005, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo