Frage

Ich habe noch nie in Python programmiert, so meinen Code entschuldigen. Ich habe dieses Skript, das in einem Terminal ausgeführt wird, aber ich kann es nicht Client-Seite laufen lernen. Ich verwende diese in Appcelerator Titanium Anwendung. Wie dem auch sei, ich habe Fehlerbehebung worden, und es scheint, dass es nicht läuft an alle Fäden. Ist dies eine Einschränkung? Wer weiß?

<script type="text/python">
import os
import sys
import Queue
import threading
class FindThread ( threading.Thread ):
   def run ( self ):
      running = True
      while running:
         if jobPool.empty(): 
            #print '<< CLOSING THREAD'
            running = False
            continue

         job = jobPool.get()
         window.document.getElementById('output').innerHTML +=  os.path.join(top, name)
         if job != None:
            dirSearch(job)             

jobPool = Queue.Queue ( 0 )

def findPython():
    #output = window.document.getElementById('output')
    window.document.getElementById('output').innerHTML += "Starting"
    dirSearch("/")
    # Start 10 threads:
    for x in xrange ( 10 ):
        #print '>> OPENING THREAD'
        FindThread().start()

def dirSearch(top = "."):
    import os, stat, types
    names = os.listdir(top)
    for name in names:
        try:
            st = os.lstat(os.path.join(top, name))
        except os.error:
            continue
        if stat.S_ISDIR(st.st_mode):
            jobPool.put( os.path.join(top, name) )
        else:
            window.document.getElementById('output').innerHTML +=  os.path.join(top, name)

window.findPython = findPython

</script>
War es hilfreich?

Lösung

Die Antwort, die derzeit (Freitag, 19. Juni 2009) ist ja, es Threads laufen kann, aber die nichts anderes als das Hauptthread kann JavaScript-Objekte zugreifen, dazu gehört auch den DOM. Wenn Sie also auf die Aktualisierung der Benutzeroberfläche mit einem Gewinde App planen, ist dies nicht möglich ... noch. Bis das Appcelerator Team erzeugt an den Haupt-Thread, möglich, über ein Bindungssystem eine Art von Warteschlange.

Bitte beachten Sie Diskussion an den Appcelerator Foren .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top