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"