python 多进程记录

随着学生数据量的越来越多,单线程的评分已经不能满足我们的效率,每天的时间大多数花费在等待评测上,由于python的多线程效率不如其他语言,所以我们决定上多进程加快评测速度.

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
file_tiku,file_stu=GetDate()
data_stu = pd.read_excel(file_stu, None)
data=splitDict(data_stu)
process_list = []
filename = r'评分结果.xlsx'
data_stu = splitDict(pd.read_excel(file_stu, None))
writer = pd.ExcelWriter(filename)
parent_conn, child_conn = Pipe()
for i in range(len(data)):
#开启n个子进程(每个进程处理8个)执行fun1函数
t=OrderedDict(data[i])
p = Process(target=fun1,args=(file_tiku,t,child_conn,)) #实例化进程对象
p.start()
process_list.append(p)

for i in process_list:
p.join()
shape_list,name_list=parent_conn.recv()
for i in range(len(shape_list)):
shape_list[i].to_excel(writer, sheet_name=name_list[i], index_label='序号')
writer.save()
print('运行结束')

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!