您的位置:首页 > 编程语言 > Python开发

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

2010-06-18 21:55 465 查看
为测试系统多线程并发操作时的响应,今天写了个简单的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语句写到一个字符串数组中,随机获取,放到线程中执行;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: