Si vous êtes nouveau dans Python et programmez généralement Java sur Android, vous pourriez penser: "Pourquoi ne pas configurer un thread, alors vous devez gérer le message avec Handler?" Cependant, il n'y a pas de version compatible Python, donc j'étais inquiet pendant un moment. Ceci est un mémo (petite histoire) pour les débutants de Python.
référence: http://qiita.com/konnyakmannan/items/2f0e3f00137db10f56a7 http://qiita.com/tortuepin/items/69fa0a307ebf15348885
Ce qui suit est celui qui a été initialement développé avec Python2.7 et a une saveur Python2.7. (J'essaye d'en utiliser six autant que possible)
En quelque sorte, c'est une table de correspondance. (C'est juste un tableau écrit avec un sens, et il n'a pas de sens profond.)
Android | Python | Remarques |
---|---|---|
Looper | Aucun(avec boucle while) | |
Handler | Queue | Dans Python3, faites la queue. six.moves.ok dans la file d'attente |
notify | threading.Event | Android ou Java |
http://docs.python.jp/2/library/queue.html
import six.moves.queue as queue
import six.moves._thread as thread
import time
def target(q):
while True:
print "loop"
print q.get()
# q.task_done() #Indique que la tâche obtenue immédiatement avant est terminée. Non requis si la jointure n'est pas utilisée
time.sleep(0.1)
q = queue.Queue()
thread.start_new_thread(target, (q,))
while True:
q.put("task")
# q.join() #Avec rejoindre, dans la file d'attente, pour tous les éléments, tâche_done()Attendez d'être fait
C'est comme ça.
Si vous voulez juste attendre, utilisez theading.Event.
import threading
import six.moves._thread as thread
import six
import time
def target(event):
for cnt in six.moves.range(0, 10):
print "loop:", cnt
time.sleep(0.1)
event.set()
event = threading.Event()
thread.start_new_thread(target, (event,))
event.wait()
print "done"