How to use time.clock() function in python

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • yinglcs@gmail.com

    #1

    How to use time.clock() function in python

    Hi,

    I am following this python example trying to time how long does an
    operation takes, like this:

    My question is why the content of the file (dataFile) is just '0.0'?
    I have tried "print >>dataFile, timeTaken" or "print >>dataFile,st r(
    timeTaken)", but gives me 0.0.
    Please tell me what am I missing?


    t1 = time.clock()
    os.system(cmd)

    outputFile = str(i) + ".png"

    t2 = time.clock()

    timeTaken = t2 - t1
    allTimeTaken += timeTaken
    print >>dataFile, timeTaken

  • Steven D'Aprano

    #2
    Re: How to use time.clock() function in python

    On Mon, 22 Jan 2007 14:05:16 -0800, yinglcs@gmail.c om wrote:
    Hi,
    >
    I am following this python example trying to time how long does an
    operation takes, like this:
    >
    My question is why the content of the file (dataFile) is just '0.0'?
    I have tried "print >>dataFile, timeTaken" or "print >>dataFile,st r(
    timeTaken)", but gives me 0.0.
    Please tell me what am I missing?
    >
    >
    t1 = time.clock()
    os.system(cmd)
    >
    outputFile = str(i) + ".png"
    >
    t2 = time.clock()
    >
    timeTaken = t2 - t1
    allTimeTaken += timeTaken
    print >>dataFile, timeTaken


    For the correct way to time operations, see the timeit module.

    For your specific problem, it is hard to tell what you are doing wrong
    when you don't tell us what "datafile" is. What's "outfile" for? It gets
    created *after* the command runs, but doesn't get used.


    --
    Steven.

    Comment

    • Gabriel Genellina

      #3
      Re: How to use time.clock() function in python

      At Monday 22/1/2007 19:05, yinglcs@gmail.c om wrote:
      >I am following this python example trying to time how long does an
      >operation takes, like this:
      >
      >My question is why the content of the file (dataFile) is just '0.0'?
      >I have tried "print >>dataFile, timeTaken" or "print >>dataFile,st r(
      >timeTaken)", but gives me 0.0.
      >Please tell me what am I missing?
      >
      >
      t1 = time.clock()
      os.system(cmd)
      >
      outputFile = str(i) + ".png"
      >
      t2 = time.clock()
      >
      timeTaken = t2 - t1
      allTimeTaken += timeTaken
      print >>dataFile, timeTaken
      time.clock() may not give you enough precision; see this recent post

      Use the timeit module instead.


      --
      Gabriel Genellina
      Softlab SRL






      _______________ _______________ _______________ _____
      Preguntá. Respondé. Descubrí.
      Todo lo que querías saber, y lo que ni imaginabas,
      está en Yahoo! Respuestas (Beta).
      ¡Probalo ya!


      Comment

      • samuel.y.l.cheung@gmail.com

        #4
        Re: How to use time.clock() function in python

        Thanks.

        I have a fuction called 'func1'.

        def func1:
        # logic of the function

        When my script just call 'func1()' it works.
        func1()

        But when put it under timerit.Timer, like this:
        t = timeit.Timer("f unc1()","")
        t.repeat(1, 10)

        # want to time how long it takes to run 'func1' 10 times, I get an
        error like this:
        File "/usr/lib/python2.4/timeit.py", line 188, in repeat
        t = self.timeit(num ber)
        File "/usr/lib/python2.4/timeit.py", line 161, in timeit
        timing = self.inner(it, self.timer)
        File "<timeit-src>", line 6, in inner
        NameError: global name 'func1' is not defined

        I don't understand why i can't find 'func1', when I call the function
        'func1' directly, it works.
        but why when I call it within 'timeit', it can't find it?

        Thank you.





        Gabriel Genellina wrote:
        At Monday 22/1/2007 19:05, yinglcs@gmail.c om wrote:
        >
        I am following this python example trying to time how long does an
        operation takes, like this:

        My question is why the content of the file (dataFile) is just '0.0'?
        I have tried "print >>dataFile, timeTaken" or "print >>dataFile,st r(
        timeTaken)", but gives me 0.0.
        Please tell me what am I missing?


        t1 = time.clock()
        os.system(cmd)

        outputFile = str(i) + ".png"

        t2 = time.clock()

        timeTaken = t2 - t1
        allTimeTaken += timeTaken
        print >>dataFile, timeTaken
        >
        time.clock() may not give you enough precision; see this recent post

        Use the timeit module instead.
        >
        >
        --
        Gabriel Genellina
        Softlab SRL
        >
        >
        >
        >
        >
        >
        _______________ _______________ _______________ _____
        Preguntá. Respondé. Descubrí.
        Todo lo que querías saber, y lo que ni imaginabas,
        está en Yahoo! Respuestas (Beta).
        ¡Probalo ya!
        http://www.yahoo.com.ar/respuestas

        Comment

        • Steven D'Aprano

          #5
          Re: How to use time.clock() function in python

          On Mon, 22 Jan 2007 15:32:58 -0800, samuel.y.l.cheu ng wrote:
          File "/usr/lib/python2.4/timeit.py", line 188, in repeat
          t = self.timeit(num ber)
          File "/usr/lib/python2.4/timeit.py", line 161, in timeit
          timing = self.inner(it, self.timer)
          File "<timeit-src>", line 6, in inner
          NameError: global name 'func1' is not defined
          >
          I don't understand why i can't find 'func1', when I call the function
          'func1' directly, it works.
          but why when I call it within 'timeit', it can't find it?
          Because the code in timeit is running in a different namespace. You have
          to import your function first. That's what the setup parameter is used for.

          Here's the hard way:

          t = timeit.Timer("f unc1()", """def func1():
          #do something here
          return result
          """)


          Here's the easy way:

          t = timeit.Timer("f unc1()", "from __main__ import func1")



          --
          Steven D'Aprano

          Comment

          • Nick Craig-Wood

            #6
            Re: How to use time.clock() function in python

            yinglcs@gmail.c om <yinglcs@gmail. comwrote:
            I am following this python example trying to time how long does an
            operation takes, like this:
            >
            My question is why the content of the file (dataFile) is just '0.0'?
            I have tried "print >>dataFile, timeTaken" or "print >>dataFile,st r(
            timeTaken)", but gives me 0.0.
            Please tell me what am I missing?
            >
            >
            t1 = time.clock()
            os.system(cmd)
            >
            outputFile = str(i) + ".png"
            >
            t2 = time.clock()
            >
            timeTaken = t2 - t1
            allTimeTaken += timeTaken
            print >>dataFile, timeTaken
            Under unix, time.clock() measures CPU time used by the current
            process. os.system() will consume almost zero CPU while it waits for
            the command you ran to finish.

            You probably want time.time(), eg
            >>from time import clock, time
            >>print clock(), time()
            0.01 1169573460.96
            >>print clock(), time()
            0.01 1169573463.76
            >>print clock(), time()
            0.01 1169573467.09
            >>>
            However running the same under windows you get a quite different
            result :-
            >>from time import clock, time
            >>print clock(), time()
            7.54285810068e-006 1169574534.84
            >>print clock(), time()
            3.32073322168 1169574538.16
            >>print clock(), time()
            7.32428004118 1169574542.15
            >>>
            In windows clock() counts in real time and at much higher resolution
            than time().

            Under windows time() counts in 1ms steps wheras it usually counts in
            1us steps under linux.

            --
            Nick Craig-Wood <nick@craig-wood.com-- http://www.craig-wood.com/nick

            Comment

            Working...