Python Threading

June 29th, 2009 No comments

In order to speed up some of my scripts I’ve implemented threading using python. Some scripts now run in 1/10th the time they used to as a result.  Here I will try to illustrate some of the key points, hopefully it will be useful to anyone.

#!/usr/bin/python
import sys
import subprocess
from threading import Thread
 
class MyThread(Thread):
    def __init__(self,server,cmd):
        Thread.__init__(self)
        self.server = server
        self.cmd = cmd
        self.status = -1
    def run(self):
        proc = subprocess.Popen('ssh %s %s' % (self.server,self.cmd),
                       shell=True,
                       stdin=subprocess.PIPE,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.STDOUT,
                       )
        self.stdout, self.stderr = proc.communicate()
 
servers = ['shell1.example.net','ssh2.mhost.com','examplebox.net']
command = 'uptime'
cmdlist = []
for srv in servers:
    run = MyThread(srv,command)
    cmdlist.append(run)
    run.start()
 
for c in cmdlist:
    c.join()
    print "### %s:n%s" % (c.server,c.stdout),
print "## Done"

In my example we loop through servers[] and for each server[] we run the specified command on them, in their own thread! 3 servers in the above example, not a big deal, what if you have 20 servers? 40 servers? huge speed improvement.

The script can be easily extended to say… read the servers list in from a configuration file, or accept the ‘command’ from the command line arguments, (argv[1:]) etc.

Enjoy.

Categories: code Tags: , ,

Bluetooth Proximity Lock for Macbook

November 25th, 2008 1 comment

I wanted to have my macbook automatically lock and unlock based on if I am in the room or not automatically. Best way to do that I figured would be bluetooth, since I always have my phone on me, and it has bluetooth. From there I proceeded to google.

http://web.mac.com/jhollington/technocrat/The_Technocrat/Entries/2007/3/18_Bluetooth_Proximity_Detection_on_OS_X.html

Pointed me to

http://www.apple.com/downloads/macosx/system_disk_utilities/proximity.html

he also includes a script to automate syncing your phone book and such too

Another utility in my searching, is called JackSMS

http://www.macupdate.com/info.php/id/21860

JackSMS does some cool stuff like, say someone tries to access your laptop while you’re not there – the built in isight camera will take their picture and email it then, so I wanted to use JackSMS as well.

Proximity allows you to set scripts for when you arrive or when you leave, so here are the applescripts I used:

lock.scpt:

tell application "JackSMS" to set lock screen to true

unlock.scpt:

tell application "JackSMS" to set lock screen to false

courtesy of: http://www.macosxhints.com/article.php?story=2006061914363693

update: a better proximity script, copied below, courtesy of:
http://pixelignition.net/better-proximity-applescript
lock.scpt:
Show ▼

unlock.scpt:
Show ▼

Categories: code Tags: , , , ,

Band Camp

November 12th, 2008 No comments

Categories: Humour Tags: ,

Jimmy

November 12th, 2008 No comments

So he said “She tried to call earlier, but was at dinner and didn’t have service.”

So I said, “Oh, so it was a Buffet?”

Categories: Humour Tags: ,

Code test

November 11th, 2008 No comments

Test

public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}
class Example
  def example(arg1)
    return "Hello: " + arg1.to_s
  end
end
Categories: code Tags: , , ,
WordPress Loves AJAX