1、在数据库中为需要where的字段建立索引:
create index mesh_idex on road_2015(mesh);(create index 索引名 on 表名(字段名))
在数据库中按照mesh字段建立索引后,对于15905283条数全部的version字段按照mesh字段进行update的单进程耗时为32分钟。
2、使用多进程:
python多线程:
#第个进行程的执行函数
def in_one_thread(partition, job_conf):
...
...
def do_first_diff_multi_thread(job_conf, name_dict):logger.notice_log("now begin first diff job!")
mid_data_path = job_conf["mid_data_path"]
if os.path.exists(mid_data_path):
shutil.rmtree(mid_data_path)os.makedirs(mid_data_path)
thread_num = 6
city_list = sorted(name_dict.keys())
###对全部城市按照线程进行任务分区
partition_num = len(name_dict)/thread_num
thread_list = []
for i in range(thread_num):
####如果是最后一组,就将多余的城市分到最后一组
if i == thread_num - 1:
partition = city_list[i*partition_num:]proc = Process(target=in_one_thread, args=(partition, job_conf,))thread_list.append(proc)continue
###启动全部进程partition = city_list[i*partition_num: (i+1)*partition_num]
#####这一步极为重要进程函数的调用
proc = Process(target=in_one_thread, args=(partition, job_conf))thread_list.append(proc)
for p in thread_list: p.start()
###等待全部进程反回
for p in thread_list: p.join()