There are many times when writing an application that single threaded database operations are simply too slow. In these cases it’s a matter of course that you’ll use multi-threading or forking to spawn secondary processes to handle the database actions. In this simple example for Python multi-threading you’ll see the how simple it is to improve the performance of your python app.
#!/usr/bin/python ## DATE: 2010-08-30 ## AUTHOR: Matt Reid ## WEBSITE: http://themattreid.com ## LICENSE: BSD http://www.opensource.org/licenses/bsd-license.php ## Copyright 2010-present Matt Reid from __future__ import division from socket import gethostname; import threading import sys import os import MySQLdb class threader(threading.Thread): def __init__(self,method): threading.Thread.__init__(self) self.tx = self.method = method def run(self): run_insert() def run_insert(): sql = "INSERT INTO table (`id`,`A`,`B`,`C`) VALUES (NULL,'0','0','0');") try: cursor.execute(sql) db.commit() except: print "insert failed" def init_thread(): for thread in range(threads): background = threader() background.start() background.join() def main(): try: init_thread() except: print "failed to initiate threads" sys.exit(0) if __name__ == "__main__": mysql_host = "localhost" #default localhost mysql_pass = "pass" #default dbbench mysql_user = "user" #default dbbench mysql_port = 3306 #default 3306 mysql_db = "schema" #default dbbench threads = 4 #must be INT not STR try: db = MySQLdb.connect(host=mysql_host, user=mysql_user, passwd=mysql_pass, db=mysql_db, port=mysql_port) except MySQLdb.Error, e: print "Error %d: %s" % (e.args[0], e.args[1]) sys.exit (1) cursor = db.cursor() main() db.close()Image may be NSFW.
Clik here to view.

PlanetMySQL Voting: Vote UP / Vote DOWN