Re: using threads in twisted

Ivan <[email protected]>
Newsgroups gmane.comp.python.twisted.web
Message-ID <[email protected]>
Thanks, but how to kill workers by timeout in this example ?


Fri, 15 Apr 2011 20:47:25 +1000 письмо от Stephen Thorne <[email protected]>:

> On 2011-04-15, Ivan wrote:
> > for example, I want to run two tasks ( using thread ), waiting while this
> tasks is end and after run  next several tasks
> > How to do this using twisted ? Any example ?
> > 
> > def task(n):
> >     sleep n
> > 
> > 1) 1,2 tasks begin  ( thread )
> > 2) waiting while all tasks is ends
> > 3) ...
> > 4) run 3,4,5,6,7 tasks ( thread )
> > 5) waiting while all tasks is ends
> 
> You can use a combination of deferToThread() and DeferredList() to do
> this. It's quite simple:
> 
> from twisted.internet import reactor
> from twisted.internet import threads
> from twisted.internet import defer
> 
> def worker(arg):
> print 'I do stuff in threads'
> return arg + 1
> 
> def first_round():
> print 'Starting workers'
> task1 = threads.deferToThread(worker, 1)
> task2 = threads.deferToThread(worker, 2)
> return defer.DeferredList([task1, task2])
> 
> def second_round(results):
> print 'result of first round is:', results
> l = []
> for x in range(10):
> l.append(threads.deferToThread(worker, x))
> return defer.DeferredList(l)
> 
> def report(results):
> print 'result of second round is:', results
> 
> def end(results):
> print results
> reactor.stop()
> 
> d = first_round()
> d.addCallback(second_round)
> d.addCallback(report)
> d.addBoth(end)
> 
> reactor.run()
> 
> -- 
> Regards,
> Stephen Thorne
> Development Engineer
> Netbox Blue
_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.