Tôi gặp vấn đề về bộ nhớ giống như Memory usage keep growing with Python's multiprocessing.pool khi tôi không sử dụng pool.close() và pool.join() khi sử dụng pool.map() với hàm tính khoảng cách Levenshtein. Chức năng này hoạt động tốt, nhưng không phải là rác được thu thập đúng cách trên máy Win7 64, và việc sử dụng bộ nhớ không ngừng kiểm soát mỗi khi chức năng được gọi cho đến khi nó mất toàn bộ hệ điều hành. Đây là mã cố định rò rỉ:
stringList = []
for possible_string in stringArray:
stringList.append((searchString,possible_string))
pool = Pool(5)
results = pool.map(myLevenshteinFunction, stringList)
pool.close()
pool.join()
Sau khi đóng và tham gia vào hồ bơi, rò rỉ bộ nhớ biến mất.
Nguồn
2017-12-06 20:55:06
Tôi thường gọi 'pool.join()' sau đó 'pool.close()' khi tôi đã bắt đầu tất cả các chủ đề của nhóm, nhưng tôi đã không thử sử dụng 'pool.imap_unordered()' làm một lần lặp. – Bamcclur
điểm gọi điện thoại tham gia hoặc đóng là gì? Tôi không gọi cho họ và mã của tôi có vẻ hoạt động tốt. Tuy nhiên, tôi lo ngại rằng không gọi những người đó sẽ dẫn đến quá trình zombie hoặc những thứ tinh tế khác. –