2009-06-14 9 views
0

Я раньше не программировал на Python, поэтому извините мой код. У меня есть этот скрипт, который будет работать в терминале, но я не могу заставить его работать на стороне клиента. Я запускаю это в приложении Titanium приложения Appcelerator. Во всяком случае, я искал его, и кажется, что он не работает нитями. Это ограничение? кто-нибудь знает?Может ли клиентский python использовать потоки?

<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> 

ответ

2

Ответ, в настоящее время (19-Пятницы, июня, 2009) да, она может работать темы, но ничего, кроме основного потока не может получить доступ к JavaScript объектов, это включает в себя DOM. поэтому, если вы планируете обновлять интерфейс с помощью приложения для потоковой передачи, это невозможно ... YET. Пока команда Appcelerator не создает какую-то очередь в основной поток, возможно через систему привязки.

См. Обсуждение на appcelerator forums.