Может ли клиентский Python использовать потоки? - PullRequest
0 голосов
/ 14 июня 2009

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

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

1 Ответ

2 голосов
/ 20 июня 2009

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

Пожалуйста, смотрите обсуждение на форумах appcelerator .

...