Может ли клиентский python использовать потоки?
-
13-09-2019 - |
Вопрос
Я никогда раньше не программировал на Python, так что извините за мой код.У меня есть этот скрипт, который будет запускаться в терминале, но я не могу заставить его работать на стороне клиента.Я запускаю это в приложении Titanium от Appcelerator.Во всяком случае, я устранял неполадки в нем, и кажется, что он вообще не запускает потоки.Является ли это ограничением?кто-нибудь знает?
<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>
Решение
Ответ, в настоящее время (пятница, 19 июня 2009 г.) - да, он может запускать потоки, но ничто, кроме основного потока, не может получить доступ к объектам JavaScript, включая DOM.поэтому, если вы планируете обновить пользовательский интерфейс с помощью приложения threading, это невозможно...ПОКА.До тех пор, пока команда Appcelerator не создаст своего рода очередь к основному потоку, возможно, через систему привязки.
Пожалуйста, смотрите обсуждение на форумы appcelerator.