Kann Seite Python Client-Threads verwenden?
-
13-09-2019 - |
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>
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 .