最新消息:

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

mysql admin 5990浏览 0评论

为测试系统多线程并发操作时的响应,今天写了个简单的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多客户端并发操作

您必须 登录 才能发表评论!