python并行运行函数,,#-*-coding


#-*-coding:utf-8-*-importmultiprocessingimportos,time,randomimportpymysqlcurdir=os.path.dirname(__file__)defdb_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)returnconndefdb_query(conn,sql):cursor=conn.cursor()cursor.execute(sql)result=cursor.fetchall()returnresultdeffun_1():fp=open(os.path.join(curdir,‘engines.txt‘),‘w‘)conn=db_conn()sql=‘selectengine,support,commentfromengines;‘result=db_query(conn,sql)forresinresult:fp.write("%s|%s|%s\n"%(res[0],res[1],res[2]))fp.flush()fp.close()conn.close()deffun_2():fp=open(os.path.join(curdir,‘collations.txt‘),‘w‘)conn=db_conn()sql=‘selectcollation_name,character_set_name,id,is_default,is_compiledfromcollations;‘result=db_query(conn,sql)forresinresult: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()deffun_3():fp=open(os.path.join(curdir,‘indexes.txt‘),‘w‘)conn=db_conn()sql=‘selectname,table_id,type,n_fields,page_nofromindexes;‘result=db_query(conn,sql)forresinresult:fp.write("%s|%s|%s|%s|%s\n"%(res[0],res[1],res[2],res[3],res[4]))fp.flush()fp.close()conn.close()defmain():conn=db_conn()fun_list=[fun_1,fun_2,fun_3]print("parentprocess%s"%os.getpid())pool=multiprocessing.Pool(3)start=time.time()forfuncinfun_list:print("funcname",func)pool.apply_async(func)print(‘waitingforallsubprocessdone...‘)pool.close()pool.join()end=time.time()print(‘Allsubprocessdone,run%0.2fseconds‘%(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(‘Alldone,run%0.2fseconds‘%(end-start))#6.616.947.037.306.91‘‘‘

当fun_1, fun_2, fun_3本身不是很耗时的时候,并行的效率没有顺序执行的效率高。

本文出自 “lang8027” 博客,请务必保留此出处http://lang8027.blog.51cto.com/9606148/1794737

python并行运行函数

评论关闭