Tôi có chức năng thực hiện một số mô phỏng và trả về một mảng ở định dạng chuỗi.Đa xử lý Python - theo dõi quá trình hoạt động pool.map
Tôi muốn chạy mô phỏng (hàm) cho giá trị tham số đầu vào khác nhau, hơn 10000 giá trị đầu vào có thể, và ghi kết quả vào một tệp.
Tôi đang sử dụng đa xử lý, cụ thể là chức năng pool.map để chạy mô phỏng song song.
Vì toàn bộ quá trình chạy chức năng mô phỏng trên 10000 lần mất một thời gian rất dài, tôi thực sự muốn theo dõi quá trình của toàn bộ thao tác.
Tôi nghĩ rằng sự cố trong mã hiện tại của tôi bên dưới là, pool.map chạy hàm 10000 lần mà không cần theo dõi quá trình trong các hoạt động đó. Khi xử lý song song kết thúc chạy 10000 mô phỏng (có thể là hàng giờ.), Sau đó tôi tiếp tục theo dõi khi 10000 kết quả mô phỏng đang được lưu vào một tệp..Điều này không thực sự theo dõi việc xử lý hoạt động pool.map.
Có cách khắc phục dễ dàng mã của tôi sẽ cho phép theo dõi quy trình không?
def simFunction(input):
# Does some simulation and outputs simResult
return str(simResult)
# Parallel processing
inputs = np.arange(0,10000,1)
if __name__ == "__main__":
numCores = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes = numCores)
t = pool.map(simFunction, inputs)
with open('results.txt','w') as out:
print("Starting to simulate " + str(len(inputs)) + " input values...")
counter = 0
for i in t:
out.write(i + '\n')
counter = counter + 1
if counter%100==0:
print(str(counter) + " of " + str(len(inputs)) + " input values simulated")
print('Finished!!!!')
cảm ơn bạn rất nhiều! – user32147