En Tue, 22 Apr 2008 13:32:38 -0300, sophie_newbie <[EMAIL PROTECTED]> escribió:
> On Apr 22, 4:41 pm, "D'Arcy J.M. Cain" <[EMAIL PROTECTED]> wrote:
>> On Tue, 22 Apr 2008 07:10:07 -0700 (PDT)
>> sophie_newbie<[EMAIL PROTECTED]> wrote:
>> > import threading
>> > class MyThread ( threading.Thread ):
>> >         def run ( self ):
>> >                 myLongCommand()...
>>
>> > import time
>>
>> > t = MyThread()
>> > t.start()
>>
>> > while t.isAlive():
>> >         print "."
>> >         time.sleep(.5)
>>
>> > print "OK"
>>
>> > The thing is this doesn't print a dot every half second. It just
>> > pauses for ages until the thread is finished and prints prints ".OK".
>> > But if I take out the "time.sleep(.5)" line it will keep printing dots
>> > really fast until the thread is finished. So it looks like its the
>> > time.sleep(.5) bit that is messing this up somehow?
>>
>> We know that your main routine gives up the processor but without a
>> full definition of MyThread how do we know that it ever does?  I
>
> "myLongCommand()... " is a call to an function in R (the statistical
> programming language) via Rpy (A python module that allows calls to
> R). The call takes a couple of minutes to execute. I'm trying to build
> a web front end to this R function and instead of the user looking at
> a blank screen for 2-3 mins, I want to print dots to let them feel
> like the program isn't hanging.
>
> What I am saying is that without the "time.sleep(.5)" line, the above
> code will print dots on the screen continuously for 2-3 mins, filling
> it up with a ridiculous ammount of dots.
>
> Whereas with the time.sleep line, instead of pausing for half a second
> between dots, its seems to print, as you correctly pointed out:
>
> .
> OK
>
> With a pause of 2-3 minutes between the . and the OK.

A possible explanation is that the RPy call does not release the GIL; once the 
main thread loses it due to sleep, it can never reacquire it again until the 
RPy call finishes.
Try contacting the RPy author, or perhaps there is a specific mailing list for 
RPy questions.

-- 
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to