diff options
| author | 2009-05-22 00:19:04 +0200 | |
|---|---|---|
| committer | 2009-05-22 00:19:04 +0200 | |
| commit | 3d34e6052db68ff482aa1aca65d512ddf40c310e (patch) | |
| tree | 3b96511d5f10a9620f0f565eafe51eb398365365 /module/thread_list.py | |
| parent | was wir nicht brauchen auskommentiert, host überprüfung verlagert (diff) | |
| download | pyload-3d34e6052db68ff482aa1aca65d512ddf40c310e.tar.xz | |
remove queue from thread list and implemented own method to get suited
job for a thread
Diffstat (limited to 'module/thread_list.py')
| -rw-r--r-- | module/thread_list.py | 44 | 
1 files changed, 35 insertions, 9 deletions
diff --git a/module/thread_list.py b/module/thread_list.py index 2a5dbe6f6..5f1710368 100644 --- a/module/thread_list.py +++ b/module/thread_list.py @@ -19,7 +19,7 @@  ###  #python  from Queue import Queue - +from threading import Lock  #my  from download_thread import Download_Thread @@ -28,11 +28,14 @@ class Thread_List(object):          self.parent = parent          self.threads = []          self.max_threads = 3 -        self.py_load_files = [] +        self.py_load_files = [] # files in queque          self.download_queue = Queue() -        self.status_queue = Queue() +        #self.status_queue = Queue()          self.f_relation = [0,0] -     +	self.lock = Lock() +	self.py_downloading = [] # files downloading +	self.occ_plugins = [] #occupied plugins	 +      def create_thread(self):          """ creates thread for Py_Load_File and append thread to self.threads          """ @@ -56,11 +59,34 @@ class Thread_List(object):                  status = self.status_queue.get()                  self.py_load_files[status.id].status = status -    def getJob(self): -        # nur wenn auch geladen werden soll, ansonsten thread in leerlauf schicken -        if True: -            return self.download_queue.get() -     +    def get_job(self): +        # return job if suitable, otherwise send thread idle +	self.lock.acquire() +	 +	pyfile = None +	 +	for i in range(0,len(self.py_load_files)): +	    if not self.py_load_files[i].modul.__name__ in self.occ_plugins: +	        pyfile = self.py_load_files.pop(i) + +	if pyfile:	 +		self.py_downloading.append(pyfile)	 +		self.occ_plugins.append(pyfile.modul.__name__) +	 +	self.lock.release() +        return pyfile +    +    def job_finish(self, pyfile): +	self.lock.acquire() +	 +	self.occ_plugins.remove(pyfile.modul.__name__) +	self.py_downloading.remove(pyfile)	 + +	#remove from list, logging etc + +	self.lock.release() +	return True +      def extend_py_load_files(self):          pass  | 
