Peut-être que je ne peux pas faire ce que je veux? Je veux avoir 1 thread faire w/e il veut et un 2ème thread à l'entrée de l'utilisateur recv pour définir le drapeau de quitter. en utilisant ce code je veux entrer q pour quitter à tout moment ou avoir l'impression hey délai d'attente après 6 foispython, affaire amusante avec des threads et des IDEs?
import sys
import threading
import time
class MyThread (threading.Thread):
def run (s):
try:
s.wantQuit = 0
while(not s.wantQuit):
print "want input"
button = raw_input()
if button == "q":
s.wantQuit=1
except KeyboardInterrupt:
s.wantQuit = 1
print "abort with KeyboardInterrupt"
print "done mythread"
myThread = MyThread()
myThread.start()
a=5
while not myThread.wantQuit:
print "hey"
if (a == 0):
break;
a = a-1;
time.sleep(1)
myThread.wantQuit=1
print "main thread done"
ce qui se passe est au lieu de deux fils que j'ai la principale impression hey 4/6 fois, puis une boîte de dialogue Poping jusqu'à demander mon entrée et l'application étant bloquée jusqu'à ce que je l'entre. WTF ?!
want input
hey
hey
hey
hey
abort with KeyboardInterrupt
done mythread
main thread done
J'utilise PyScripter (il a le débogage), j'ai aussi essayé pydle qui ne marche pas semble me permettre d'entrer dans l'entrée et se bloque finalement après l'exécution d'une fois.
Tout d'abord, utilisez "self" et non "s". Les programmeurs Python seront totalement confus si vous n'utilisez pas "self". – llimllib
seconde, supprimer les parenthèses dans "while (pas self.wantQuit):", ils sont inutiles. – llimllib
Troisièmement, je ne pense pas que raw_input fonctionne comme vous le pensez, vous devez appuyer sur "q" pour quitter, et pas seulement sur "q" –
llimllib