struct
math
threading
time
sys
multiprocessing
multiprocessing Process
read_csv(filename):
start_time = time.time()
sem
sem = threading.Semaphore()
file
file = (filename, )
(% file.read().decode())
encoded_triangles = file.read()
triangles = .from_bytes(encoded_triangles, )
manager = multiprocessing.Manager()
return_tot = manager.dict()
totals = []
return_coord = manager.dict()
coords = []
index (, ):
p = Process(=thread_compute, =(index, triangles, return_tot, return_coord))
totals.append(p)
coords.append(p)
p.start()
index (, ):
p.join()
total_area = index (, ):
total_area += return_tot[index]
min_box = find_box(return_coord[], return_coord[], return_coord[], return_coord[])
end_time = time.time()
total_time = end_time - start_time
triangles, total_area, min_box, total_time
thread_compute(index, triangles, return_tot, return_coord):
total_area = min_max = []
start = (index * triangles / )
(triangles / ) > triangles - :
end = triangles
:
end = start + (triangles / )
triangle (start, end):
sem.acquire()
= [file.read(), file.read(), file.read()]
p1 = [file.read(), file.read(), file.read()]
p2 = [file.read(), file.read(), file.read()]
p3 = [file.read(), file.read(), file.read()]
= file.read()
sem.release()
p1, p2, p3 = process_coord(p1, p2, p3)
tri_area = compute(p1, p2, p3)
total_area += tri_area
temp = []
i (,):
temp.append(([p1[i], p2[i], p3[i]]))
i (,):
temp.append(([p1[i], p2[i], p3[i]]))
triangle == start:
min_max = temp
:
i (,):
temp[i] < min_max[i]:
min_max[i] = temp[i]
i (,):
temp[i] > min_max[i]:
min_max[i] = temp[i]
return_coord[index] = min_max
return_tot[index] = total_area
process_coord(p1, p2, p3):
p1 = convert_values(p1)
p2 = convert_values(p2)
p3 = convert_values(p3)
p1, p2, p3
convert_values(point):
[struct.unpack(, point[])[],
struct.unpack(, point[])[],
struct.unpack(, point[])[]]
compute(p1, p2, p3):
a = math.sqrt((p2[] - p1[]) ** + (p2[] - p1[]) ** + (p2[] - p1[]) ** )
b = math.sqrt((p3[] - p1[]) ** + (p3[] - p1[]) ** + (p3[] - p1[]) ** )
c = math.sqrt((p3[] - p2[]) ** + (p3[] - p2[]) ** + (p3[] - p2[]) ** )
p = (a + b + c) / area = math.sqrt(p * (p - a) * (p - b) * (p - c))
area
find_box(min_max1, min_max2, min_max3, min_max4):
= []
min_max = min_max1
i (,):
min_max2[i] < min_max[i]:
min_max[i] = min_max2[i]
i (,):
min_max2[i] > min_max[i]:
min_max[i] = min_max2[i]
i (,):
min_max3[i] < min_max[i]:
min_max[i] = min_max3[i]
i (,):
min_max3[i] > min_max[i]:
min_max[i] = min_max3[i]
i (,):
min_max4[i] < min_max[i]:
min_max[i] = min_max4[i]
i (,):
min_max4[i] > min_max[i]:
min_max[i] = min_max4[i]
line1 = math.sqrt((min_max[] - min_max[]) ** )
line2 = math.sqrt((min_max[] - min_max[]) ** )
line3 = math.sqrt((min_max[] - min_max[]) ** )
box = % (line1, line2, line3)
box
show_output(triangles, total_area, min_box, ):
(% triangles)
(% total_area)
(% min_box)
(% )
__name__ == :
(sys.argv) < :
()
filename = (sys.argv[])
triangles, total_area, min_box, total_time = read_csv(filename)
show_output(triangles, total_area, min_box, total_time)

老师,您帮我看看,这个报这个错误,我应该在哪里输入文件名字