Hi everyone! I'm trying to do something like this: print "Processing... " #some fancy code that takes ages, or maybe: sleep(3) print "done\n" I was expecting to get the following output on my console: Processing... [and after 3 secs:]done However, the script first waits 3 seconds and then writes the whole line at once. If I change the first line to print "Processing...\n" everything works as expected. But that's not really what I want. Is there another way of doing this? Thanks, Janus
on 2008-07-15 23:14
on 2008-07-15 23:22
On Jul 15, 2008, at 5:09 PM, Janus Bor wrote: > > > I was expecting to get the following output on my console: > > Processing... [and after 3 secs:]done > > However, the script first waits 3 seconds and then writes the whole > line > at once. Try this: print "Processing... " STDOUT.flush sleep 3 puts "done" STDOUT#flush will ensure that everything in the buffer will be printed, there and then ~ Ari English is like a pseudo-random number generator - there are a bajillion rules to it, but nobody cares.
on 2008-07-15 23:23
On Tue, Jul 15, 2008 at 3:09 PM, Janus Bor <janus@urban-youth.com> wrote: > > everything works as expected. But that's not really what I want. Is > there another way of doing this? > > Thanks, Janus > -- > Posted via http://www.ruby-forum.com/. > > Janus this works for me: def processing print "Processing... " sleep(3) print "done!" end processing -- "Hey brother Christian with your high and mighty errand, Your actions speak so loud, I can't hear a word you're saying." -Greg Graffin (Bad Religion)
on 2008-07-15 23:31
fedzor wrote: > Try this: > > print "Processing... " > STDOUT.flush > > sleep 3 > > puts "done" > > STDOUT#flush will ensure that everything in the buffer will be > printed, there and then > Thank you! That does the trick... Glen Holcomb wrote: > Janus this works for me: > > def processing > print "Processing... " > sleep(3) > print "done!" > end > > processing > Strange, on my machine (Ruby 1.86 on Linux) "Processing... " and "done!" appear at the same time (after the 3 seconds).
on 2008-07-15 23:37
On Tue, Jul 15, 2008 at 3:26 PM, Janus Bor <janus@urban-youth.com> wrote: > > STDOUT#flush will ensure that everything in the buffer will be > > print "Processing... " > Posted via http://www.ruby-forum.com/. > > Until reading fedzor's post I had completely forgotten that different Operating systems behave differently. I'm on a Windows machine here at work. Glad you got it fixed though. -- "Hey brother Christian with your high and mighty errand, Your actions speak so loud, I can't hear a word you're saying." -Greg Graffin (Bad Religion)
on 2008-07-16 03:43
On Jul 15, 2008, at 3:17 PM, fedzor wrote: > STDOUT#flush will ensure that everything in the buffer will be > printed, there and then > Another option ... STDOUT.sync = true print "Processing... " The sync flag will cause the IO stream to be flushed after every write / print / puts. Blessings, TwP
on 2008-07-16 13:56
Another option: print your message to stderr, not stdout. Stderr is usually not buffered by the OS (for exactly this sort of reason). Dave
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.