Wenn Sie Python noch nicht kennen und Java normalerweise auf Android programmieren, denken Sie möglicherweise: "Warum richten Sie keinen Thread ein, dann müssen Sie die Nachricht mit Handler bearbeiten?" Da es jedoch keine Python-kompatible Version gibt, war ich einen Moment besorgt. Dies ist ein Memo (kleine Geschichte) für Anfänger von Python.
Referenz: http://qiita.com/konnyakmannan/items/2f0e3f00137db10f56a7 http://qiita.com/tortuepin/items/69fa0a307ebf15348885
Das Folgende wurde ursprünglich mit Python2.7 entwickelt und hat eine Python2.7-Variante. (Ich versuche so viel wie möglich sechs zu verwenden)
Irgendwie ist es eine Korrespondenztabelle. (Es ist nur eine Tabelle, die mit einem Sinn geschrieben wurde und keine tiefe Bedeutung hat.)
Android | Python | Bemerkungen |
---|---|---|
Looper | Keiner(mit while-Schleife) | |
Handler | Queue | In Python3 Warteschlange. sechs.moves.ok in der Warteschlange |
notify | threading.Event | Android oder 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() #Benachrichtigt, dass die unmittelbar zuvor erhaltene Aufgabe abgeschlossen ist. Nicht erforderlich, wenn kein Join verwendet wird
time.sleep(0.1)
q = queue.Queue()
thread.start_new_thread(target, (q,))
while True:
q.put("task")
# q.join() #Mit Join in der Warteschlange für alle Elemente Aufgabe_done()Warten Sie, bis Sie fertig sind
Es ist wie es ist.
Wenn Sie nur warten möchten, verwenden Sie 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"