Microthreads

David Lees abcdebl2nonspammy at verizon.net
Sat May 17 18:49:28 EDT 2003


Time on my Athlon 1700XP, running Win2k with 500MB RAM and pythonwin 
2.2.2 is 2.4 seconds.

david lees

Gary Richardson wrote:
> In David Mertz's article on microthreads
> http://www-106.ibm.com/developerworks/linux/library/l-pythrd.html
> the script in Listing 2 (appended below) attempts to characterize the
> overhead of his scheme. It creates 100,000 threads and measures the time
> to perform one million context switches. On my computer (400 MHz AMD-K6,
> Win98 SE, 192 MB ram) this took about 40 seconds. The article states that
> on a 366 MHz Pentium II laptop the time was about 10 seconds. I'm using
> Python 2.2, Pythonwin, win32all build 146.
> Is my computer really sick?
> 
> 
> from __future__ import generators
> import sys, time
> threads = []
> TOTALSWITCHES = 10**6
> NUMTHREADS = 10**5
> 
> def null_factory():
>     def empty():
>         while 1: yield None
>     return empty()
> 
> def quitter():
>     for n in xrange(TOTALSWITCHES / NUMTHREADS):
>         yield None
> 
> def scheduler():
>     global threads
>     try:
>         while 1:
>             for thread in threads: thread.next()
>     except StopIteration:   pass
> 
> if __name__ == "__main__":
>     for i in range(NUMTHREADS):
>         threads.append(null_factory())
>     threads.append(quitter())
>     starttime = time.clock()
>     scheduler()
>     print 'total time:', time.clock() - starttime
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 





More information about the Python-list mailing list