python模拟mysql多客户端并发操作

为测试系统多线程并发操作时的响应,今天写了个简单的python脚本往mysql中插入、取出数据,用到了MySQLdb、threading模块。

其中threading模块是对thread模块的一个面向对象的封装,比较好用。

 

import MySQLdb import threading import sys def db_op_thread_func( i, num_of_op ): conn=MySQLdb.connect(host="x.x.x.x",port=x, user="xxxx",passwd="",db="xxxx") cursor = conn.cursor() sql = "select * from xxxx" for j in range(0, int(num_of_op) ): cursor.execute( sql ) print "thread", i, ":", " num:", j conn.close() if __name__ == "__main__": args = sys.argv num_of_thd = args[1] num_of_op = args[2] threads = [] for i in range( 0, int(num_of_thd) ): threads.append( threading.Thread( target=db_op_thread_func,args=(i, num_of_op ) ) ) for t in threads: t.start() for t in threads: t.join()

 

注意:

1,为防止主线程先于其它线程退出造成程序异常,需要调用 join() 函数,等待进程结束;

2,print语句的作用是为了了解程序运行情况,实时关注程序是否卡在了什么地方;

3,python程序获得命令行参数;

 

改进:

1,如果想模拟不同的操作,可以将若干sql语句写到一个字符串数组中,随机获取,放到线程中执行;

你可能感兴趣的:(python,mysql,python,mysql,thread,sql,多线程,import)