On Oct 7, 3:20 pm, jimgardener <jimgarde...@gmail.com> wrote:
> hi
> In my django view ,I am creating a Thread subclass and adding it to a
> ThreadManager TM to keep in a dictionary with name of thread as key
> and instance as value.I have implemented TM as a singleton and
> verified that only one instance of TM exists .However,when the view
> calls tm.add_mythread() ,I find that the dictionary inside is empty
> and the currently added instance becomes the only member.
>
> I hope the code will make this clear.Please tell me what I did that
> was wrong.I unit tested the TM using Dummy thread class and found that
> the add works correctly .It is only when the view calls tm.add that
> the above behaviour occurs
>
> The view is like this,
>
> def add_new_threadobj(request,page_title,template_name):
>     ....
>     if request.method=='POST' and form.is_valid():
>         tobj=MyThread(some_post_data..)
>         tm=SingletonTM()
>         print 'tm=',tm  # to check if same instance
>         tm.add_mythread(tobj)
>         tobj.start()
>         ....
>
> TM is a singleton
>
> class TM(MySingleton):
>     def __init__(self):
>         self.threads={}
>     def add_thread(self,th):
>         if th.name in self.threads.keys():
>             print 'already in'
>         else:
>             print 'TM::before::threads:',self.threads
>             self.threads[th.name]=th
>             print 'TM::',self,'add_thread()::added=%s'%th.name
>             print 'TM::after::threads:',self.threads
>
>     def remove_thread(tname):
>         if tname in self.threads.keys():
>             del self.threads[tname]
>
> When the view add_new_threadobj() is executed a couple of times,this
> is the print output
> adding for the first time,
> tm= <mytm.TM object at 0x94a83ec>
> TM::before::threads: {}
> TM:: <mytm.TM object at 0x94a83ec> add_thread()::added=threadname1
> TM::after::threads: {'threadname1':<MyThread(threadname1, initial
> daemon)>}
>
> adding another,
> tm= <mytm.TM object at 0x94a83ec>
> TM::before::threads: {}
> TM::after::threads: {'threadname2':<MyThread(threadname2, initial
> daemon)>}
>
> This is what I couldn't make out, the dictionary should now contain 2
> kv pairs.Since the tm instance is the same,the self.threads should
> have  printed  the initially added thread's name and instance.
> Please tell me if I am missing something
>
> thanks
> jim

What is the MySingleton superclass? There's nothing in the code you've
posted that shows that TM is actually a singleton.
--
DR.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to