[Stackless-checkins] CVS: slpdev/src/2.3/dev/Stackless/test taskspeed.py, 1.23, 1.24

Christian Tismer tismer at centera.de
Thu Jul 8 20:58:33 CEST 2004


Update of /home/cvs/slpdev/src/2.3/dev/Stackless/test
In directory centera.de:/tmp/cvs-serv9390/Stackless/test

Modified Files:
	taskspeed.py 
Log Message:
added iterator support to channels,
and sending of sequences.
It works, there is just a case missing to
make it completely stackless.
Changed exceptions to stopiteration in certain places.
Very convenient for main, when consuming all of
a channel's data with list(ch)

Index: taskspeed.py
===================================================================
RCS file: /home/cvs/slpdev/src/2.3/dev/Stackless/test/taskspeed.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** a/taskspeed.py	24 May 2004 17:42:14 -0000	1.23
--- b/taskspeed.py	8 Jul 2004 18:58:30 -0000	1.24
***************
*** 81,87 ****
      for i in gf(n):pass
  
! def channel_sender(send, nest=0):
      if nest:
!         return channel_sender(send, nest-1)
      while 1:
          send(42); send(42); send(42); send(42); send(42);
--- 81,95 ----
      for i in gf(n):pass
  
! def channel_sender(chan, nest=0, bulk=0):
      if nest:
!         return channel_sender(chan, nest-1)
!     if bulk:
!         data = range(20)
!         send_seq = chan.send_sequence
!         send_exc = chan.send_exception
!         while 1:
!             send_seq(data)
!             send_exc(StopIteration)
!     send = chan.send
      while 1:
          send(42); send(42); send(42); send(42); send(42);
***************
*** 90,94 ****
          send(42); send(42); send(42); send(42); send(42);
  
! def chantest(n, nest=0, use_thread=False):
      if nest:
          return chantest(n, nest-1, use_thread)
--- 98,102 ----
          send(42); send(42); send(42); send(42); send(42);
  
! def chantest(n, nest=0, use_thread=False, bulk = False):
      if nest:
          return chantest(n, nest-1, use_thread)
***************
*** 96,105 ****
      chan.preference = 0 # fastest
      if use_thread:
!         thread.start_new_thread(channel_sender, (chan.send,))
          # wait for thread
          while not chan.balance:
              schedule()
      else:
!         tasklet(channel_sender)(chan.send)
      recv = chan.receive
      def xrecv():
--- 104,119 ----
      chan.preference = 0 # fastest
      if use_thread:
!         thread.start_new_thread(channel_sender, (chan,))
          # wait for thread
          while not chan.balance:
              schedule()
      else:
!         tasklet(channel_sender)(chan, nest, bulk)
!     if bulk:
!         for i in xrange(0, n, 20):
!             #list(chan)
!             for i in chan: pass
!         return
!         
      recv = chan.receive
      def xrecv():
***************
*** 132,151 ****
  enable_softswitch(0)
  res = []
! res.append(tester(f, niter, (schedule,),       "frame switches     "))
  enable_softswitch(1)
! res.append(tester(f, niter, (schedule,),       "frame softswitches "))
! res.append(tester(f, niter, (sys._getframe,),  "cfunction calls    "))
! res.append(tester(test_cframe_nr, niter, (),   "cframe softswitches"))
  enable_softswitch(0)
! res.append(tester(chantest, niter, (),         "channel hard top   "))
! res.append(tester(chantest, niter, (3,),       "channel hard nest 3"))
  enable_softswitch(1)
! res.append(tester(chantest, niter, (),         "channel soft       "))
  res.append(tester(chantest, niter//10, (0, 1),  "channel real thread"))
! res.append(tester(f, niter, (lambda:0,),       "function calls     "))
! res.append(tester(gentest, niter, (),          "generator calls    "))
! res.append(tester(test_cframe, niter//10, (),  "cframe from outside", 1, test_outside))
! res.append(tester(test_cframe, niter, (),      "cframe switches    "))
! res.append(tester(test_cframe, niter, (100,),  "cframe 100 words   "))
  
  if IS_SLP:
--- 146,166 ----
  enable_softswitch(0)
  res = []
! res.append(tester(f, niter, (schedule,),        "frame switches     "))
  enable_softswitch(1)
! res.append(tester(f, niter, (schedule,),        "frame softswitches "))
! res.append(tester(f, niter, (sys._getframe,),   "cfunction calls    "))
! res.append(tester(test_cframe_nr, niter, (),    "cframe softswitches"))
  enable_softswitch(0)
! res.append(tester(chantest, niter, (),          "channel hard top   "))
! res.append(tester(chantest, niter, (3,),        "channel hard nest 3"))
  enable_softswitch(1)
! res.append(tester(chantest, niter, (),          "channel soft       "))
! res.append(tester(chantest, niter, (0, 0, 1),   "channel iterator   "))
  res.append(tester(chantest, niter//10, (0, 1),  "channel real thread"))
! res.append(tester(f, niter, (lambda:0,),        "function calls     "))
! res.append(tester(gentest, niter, (),           "generator calls    "))
! res.append(tester(test_cframe, niter//10, (),   "cframe from outside", 1, test_outside))
! res.append(tester(test_cframe, niter, (),       "cframe switches    "))
! res.append(tester(test_cframe, niter, (100,),   "cframe 100 words   "))
  
  if IS_SLP:


_______________________________________________
Stackless-checkins mailing list
Stackless-checkins at stackless.com
http://www.stackless.com/mailman/listinfo/stackless-checkins



More information about the Stackless-checkins mailing list