Question

Je suis un débutant et utiliser Python 2.7. Je veux faire les paramètres des définitions à changeable pour que je puisse CONTROLL la sortie de pause et la chaîne à la volée. Est-ce possible? J'ai lu quelques trucs de fil, mais il semble être plus sur l'exécution de deux tâches en même temps. Je veux la communication entre les deux tâches pendant l'exécution.

    def writeAndPause(stringToWrite,pauseSeconds)
        while True:
            print stringToWrite
            sleep(pauseSeconds)

Toute solution ou un lien vers la documentation est très apprécié. Merci pour votre temps! / Karl

Était-ce utile?

La solution

Les threads sont pour le travail simultané. Je suppose que si vous redessinez simplement votre code, vous aurez l'effet que vous voulez. Envisager de supprimer la clause de while de vous fonctionnez et de mettre à l'extérieur:

def writeAndPause(stringToWrite,pauseSeconds)
    print stringToWrite
    sleep(pauseSeconds)

Et quelque part, vous appelez cette fonction:

while True:
    stringToWrite, pauseSeconds = gatherSomeInformation()
    writeAndPause(stringToWrite, pauseSeconds)

Autres conseils

@Constantinius est juste. La réponse est presque certainement de revoir votre code afin que vous n'avez pas besoin de faire quelque chose ésotérique

Je vais décrire une autre façon de le faire uniquement pour le plaisir. Si vous voulez vraiment garder que si la boucle dans la fonction, vous pouvez le faire avec

Est-ce que cela vous aide?

Il profite des caractéristiques de définition de l'argument par défaut et le fait d'une liste n'est pas une variable mais une collection de référence, dans mon code seul (dit peu)

from time import sleep,time

stringToWrite = [None]
pauseSeconds = [0]

def writeAndPause(stw = stringToWrite, pz = pauseSeconds, keep = [time()]):
        if stw[0]:
            print stw[0]
        else:
            print 'START'
        print '  having waited ',time()-keep[0],'seconds,    must wait',pz[0],'seconds'
        keep[0] = time()
        sleep(pz[0])


writeAndPause()


for a,b in (('first',1),('second',2.05),('third',3.4),('fourth',0.88),
            ('BANANA',0.2),('APPLE',1.5),
            ('PEAR',0.77),('CHERRY',4),
            ('ORANGE',0.1),('NUT',6),
            ('APRICOT',0.56),('PLUM',2.5)):

    stringToWrite[0] = a
    pauseSeconds[0] = b
    writeAndPause()

Résultat

START
  having waited  0.0310001373291 seconds,    must wait 0 seconds
first
  having waited  0.0320000648499 seconds,    must wait 1 seconds
second
  having waited  1.01600003242 seconds,    must wait 2.05 seconds
third
  having waited  2.15600013733 seconds,    must wait 3.4 seconds
fourth
  having waited  3.42100000381 seconds,    must wait 0.88 seconds
BANANA
  having waited  0.905999898911 seconds,    must wait 0.2 seconds
APPLE
  having waited  0.266000032425 seconds,    must wait 1.5 seconds
PEAR
  having waited  1.51499986649 seconds,    must wait 0.77 seconds
CHERRY
  having waited  0.796999931335 seconds,    must wait 4 seconds
ORANGE
  having waited  4.03200006485 seconds,    must wait 0.1 seconds
NUT
  having waited  0.140000104904 seconds,    must wait 6 seconds
APRICOT
  having waited  6.03099989891 seconds,    must wait 0.56 seconds
PLUM
  having waited  0.765000104904 seconds,    must wait 2.5 seconds
scroll top