more memleak fixes
This commit is contained in:
@@ -132,6 +132,26 @@ class VideoProcessor:
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
# Clear OpenCV internal caches
|
||||
try:
|
||||
# Clear OpenCV video capture cache
|
||||
cv2.setUseOptimized(False)
|
||||
cv2.setUseOptimized(True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Clear CuPy caches if available
|
||||
try:
|
||||
import cupy as cp
|
||||
cp._default_memory_pool.free_all_blocks()
|
||||
cp._default_pinned_memory_pool.free_all_blocks()
|
||||
cp.get_default_memory_pool().free_all_blocks()
|
||||
cp.get_default_pinned_memory_pool().free_all_blocks()
|
||||
except ImportError:
|
||||
pass
|
||||
except Exception as e:
|
||||
print(f" Warning: Could not clear CuPy cache: {e}")
|
||||
|
||||
# Force Linux to release memory back to OS
|
||||
if sys.platform == 'linux':
|
||||
try:
|
||||
@@ -623,16 +643,27 @@ class VideoProcessor:
|
||||
# Load and merge chunks from disk
|
||||
print("\nLoading and merging chunks...")
|
||||
chunk_results = []
|
||||
for chunk_file in chunk_files:
|
||||
for i, chunk_file in enumerate(chunk_files):
|
||||
print(f"Loading {chunk_file.name}...")
|
||||
chunk_data = np.load(str(chunk_file))
|
||||
chunk_results.append(chunk_data['frames'])
|
||||
chunk_data.close() # Close the file
|
||||
|
||||
# Delete chunk file immediately after loading to free disk space
|
||||
try:
|
||||
chunk_file.unlink()
|
||||
print(f" Deleted chunk file {chunk_file.name}")
|
||||
except Exception as e:
|
||||
print(f" Warning: Could not delete chunk file: {e}")
|
||||
|
||||
# Aggressive cleanup every few chunks to prevent accumulation
|
||||
if i % 3 == 0 and i > 0:
|
||||
self._aggressive_memory_cleanup(f"after loading chunk {i}")
|
||||
|
||||
# Merge chunks
|
||||
final_frames = self.merge_overlapping_chunks(chunk_results, overlap_frames)
|
||||
|
||||
# Free chunk results after merging
|
||||
# Free chunk results after merging - this is critical!
|
||||
del chunk_results
|
||||
self._aggressive_memory_cleanup("after merging chunks")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user