<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Threads.py</id>
	<title>Threads.py - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Threads.py"/>
	<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Threads.py&amp;action=history"/>
	<updated>2026-06-05T11:29:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Threads.py&amp;diff=1283&amp;oldid=prev</id>
		<title>PeterHarding: New page: &lt;pre&gt; #!/usr/bin/env python  #---------------------------------------------------------------------  import time import logging  from threading import * from datetime import datetime  #---...</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Threads.py&amp;diff=1283&amp;oldid=prev"/>
		<updated>2008-02-15T04:43:51Z</updated>

		<summary type="html">&lt;p&gt;New page: &amp;lt;pre&amp;gt; #!/usr/bin/env python  #---------------------------------------------------------------------  import time import logging  from threading import * from datetime import datetime  #---...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
import time&lt;br /&gt;
import logging&lt;br /&gt;
&lt;br /&gt;
from threading import *&lt;br /&gt;
from datetime import datetime&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
LOGFILE = &amp;#039;threads.log&amp;#039;&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
class my_thread(Thread):&lt;br /&gt;
    def __init__(self, target, args=(), name=None):&lt;br /&gt;
        # we need a tuple here&lt;br /&gt;
        if type(args)&amp;lt;&amp;gt;type((1,)):&lt;br /&gt;
            args = (args,)&lt;br /&gt;
        Thread.__init__(self, target=target, name=name, args=args)&lt;br /&gt;
        self._uptime = datetime.now()&lt;br /&gt;
        self.start()&lt;br /&gt;
&lt;br /&gt;
    def getUptime(self):&lt;br /&gt;
        return self._uptime&lt;br /&gt;
&lt;br /&gt;
    def __str__(self):&lt;br /&gt;
        return self.getName()&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def get_threads():&lt;br /&gt;
    &amp;quot;Does not list main thread...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return filter(lambda x: x.getName()&amp;lt;&amp;gt;&amp;quot;MainThread&amp;quot;, enumerate())&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def DoSome(s=&amp;quot;&amp;quot;):&lt;br /&gt;
   msg = &amp;quot;[DoSome]  %s  Now it&amp;#039;s %s&amp;quot; % (s, datetime.now())&lt;br /&gt;
   print msg&lt;br /&gt;
   log.info(msg)&lt;br /&gt;
&lt;br /&gt;
   time.sleep(0.3)&lt;br /&gt;
&lt;br /&gt;
   for i in range(5):&lt;br /&gt;
      msg =  &amp;quot;[DoSome]  %s           %s&amp;quot; % (s, datetime.now())&lt;br /&gt;
      print msg&lt;br /&gt;
      log.info(msg)&lt;br /&gt;
      time.sleep(0.5)&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
if __name__==&amp;quot;__main__&amp;quot;:&lt;br /&gt;
   #----- Set up logging --------------------------------------------&lt;br /&gt;
&lt;br /&gt;
   log  = logging.getLogger(&amp;#039;test&amp;#039;)&lt;br /&gt;
   hdlr = logging.FileHandler(LOGFILE)&lt;br /&gt;
   fmtr = logging.Formatter(&amp;#039;%(asctime)s %(levelname)s %(message)s&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
   hdlr.setFormatter(fmtr)&lt;br /&gt;
   log.addHandler(hdlr) &lt;br /&gt;
   log.setLevel(logging.INFO)&lt;br /&gt;
&lt;br /&gt;
   log.info(&amp;quot;[main]  ===== Started processing =====&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   #-----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
   t1 = my_thread(DoSome, (&amp;quot;one&amp;quot;))&lt;br /&gt;
   t2 = my_thread(DoSome, (&amp;quot;two&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
   time.sleep(0.7)&lt;br /&gt;
&lt;br /&gt;
   for t in get_threads(): &lt;br /&gt;
      msg = &amp;quot;[main]    %s      %s&amp;quot; % (t, t.getUptime())&lt;br /&gt;
      print msg&lt;br /&gt;
      log.info(msg)&lt;br /&gt;
      time.sleep(0.7)&lt;br /&gt;
&lt;br /&gt;
   #-----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
   log.info(&amp;quot;[main]  ===== Finished processing =====&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
</feed>