# -*- coding: utf-8 -*- import multiprocessing import os, time,random import pymysql curdir = os.path.dirname(__file__) def db_conn(): conn = pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘123456‘,db=‘entries‘, charset=‘utf8‘) #conn = pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘root‘,db=‘db‘, charset=‘utf8‘, cursorclass=pymysql.cursors.DictCursor) return conn def db_query(conn, sql): cursor = conn.cursor() cursor.execute(sql) result = cursor.fetchall() return result def fun_1(): fp = open(os.path.join(curdir, ‘engines.txt‘), ‘w‘) conn = db_conn() sql = ‘select engine,support,comment from engines;‘ result = db_query(conn, sql) for res in result: fp.write("%s|%s|%s\n" %(res[0],res[1], res[2])) fp.flush() fp.close() conn.close() def fun_2(): fp = open(os.path.join(curdir, ‘collations.txt‘), ‘w‘) conn = db_conn() sql = ‘select collation_name,character_set_name,id,is_default, is_compiled from collations;‘ result = db_query(conn, sql) for res in result: fp.write("%s|%s|%s|%s|%s\n" %(res[0],res[1], str(res[2]),res[3],res[4])) fp.flush() fp.close() conn.close() def fun_3(): fp = open(os.path.join(curdir, ‘indexes.txt‘), ‘w‘) conn = db_conn() sql = ‘select name,table_id,type,n_fields,page_no from indexes;‘ result = db_query(conn, sql) for res in result: fp.write("%s|%s|%s|%s|%s\n" %(res[0],res[1], res[2],res[3],res[4])) fp.flush() fp.close() conn.close() def main(): conn = db_conn() fun_list = [ fun_1, fun_2, fun_3 ] print("parent process %s" % os.getpid()) pool = multiprocessing.Pool(3) start = time.time() for func in fun_list: print("func name", func) pool.apply_async(func) print(‘waiting for all subprocess done...‘) pool.close() pool.join() end = time.time() print(‘All subprocess done, run %0.2f seconds‘ % (end - start)) conn.close() if __name__ == ‘__main__‘: main() # 0.3 - 0.42 ‘‘‘ start = time.time() conn = db_conn() fun_1(conn) fun_2(conn) fun_3(conn) conn.close() end = time.time() print(‘All done, run %0.2f seconds‘ % (end - start)) #6.61 6.94 7.03 7.30 6.91 ‘‘‘
当fun_1, fun_2, fun_3本身不是很耗时的时候,并行的效率没有顺序执行的效率高。
时间: 2024-10-12 17:51:57