python模拟mysql多客户端并发操作
2010-06-18 21:55
465 查看
为测试系统多线程并发操作时的响应,今天写了个简单的python脚本往mysql中插入、取出数据,用到了MySQLdb、threading模块。
其中threading模块是对thread模块的一个面向对象的封装,比较好用。
注意:
1,为防止主线程先于其它线程退出造成程序异常,需要调用 join() 函数,等待进程结束;
2,print语句的作用是为了了解程序运行情况,实时关注程序是否卡在了什么地方;
3,python程序获得命令行参数;
改进:
1,如果想模拟不同的操作,可以将若干sql语句写到一个字符串数组中,随机获取,放到线程中执行;
其中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模拟银行转账
- python操作MySQL 模拟简单银行转账操作
- python操作MySQL 模拟简单银行转账操作
- python操作MySQL 模拟简单银行转账操作
- _mysql_exceptions.IntegrityError: (1062, "Duplicate entry, Python操作MySQL数据库,插入重复数据
- python 捕捉和模拟鼠标键盘操作
- python 安装操作 MySQL 数据库.
- python 操作mysql数据中fetchone()和fetchall()
- Python(SQLAlchemy-ORM)模块之mysql操作
- python操作mysql
- python异步操作MySQL(aiomysql)
- C# winform 窗体接收命令行参数自动登录进行系统,模拟600个WCF客户端的并发压力测试
- python操作MySQL
- 基于tcp或者UDP socket 情况下服务器客户端并发操作
- python 使用mysql进行操作
- mysql delete错误使用where条件的操作恢复(模拟oracle闪回)
- Python操作MySQL
- Python操作Mysql实例代码教程