open_video(filename) as f: for video_frame in f.get_frames(): level = video_frame.get_violence_level() levels.append(level) return np.median(levels) def process_files(levels: {str, float}, directory: str): for _,dirs, files in os.walk(directory): for file in files: level = process_file(file) levels[file] = level for dir in dirs: process_files(levels, dir) violence_level = {} process_files(violence_level, 'd:/video/anime')
open_video(filename) as f: for video_frame in f.get_frames(): level = video_frame.get_violence_level() levels.append(level) return np.median(levels) def process_files(levels: {str, float}, directory: str): for _, dirs, files in os.walk(directory): for file in files: level = process_file(file) levels[file] = level for dir in dirs: process_files(levels, dir) violence_level = {} process_files(violence_level, 'd:/video/anime')
open_video(filename) as f: for video_frame in f.get_frames(): level = video_frame.get_violence_level() levels.append(level) return np.median(levels) def process_files(levels: {str, float}, directory: str): for _, dirs, files in os.walk(directory): for file in files: level = process_file(file) levels[file] = level for dir in dirs: process_files(levels, dir) violence_level = {} process_files(violence_level, 'd:/video/anime')
open_video(filename) as f: for video_frame in f.get_frames(): level = video_frame.get_violence_level() levels.append(level) return np.median(levels) def process_files(levels: {str, float}, directory: str): for _, dirs, files in os.walk(directory): for file in files: level = process_file(file) levels[file] = level for dir in dirs: process_files(levels, dir) violence_level = {} process_files(violence_level, 'd:/video/anime')
open_video(filename) as f: for video_frame in f.get_frames(): level = video_frame.get_violence_level() levels.append(level) return np.median(levels) def process_files(levels: {str, float}, directory: str): for _, dirs, files in os.walk(directory): for file in files: level = process_file(file) levels[file] = level for dir in dirs: process_files(levels, dir) violence_level = {} process_files(violence_level, 'd:/video/anime')
сборок среднего поколения long_lived_pending / long_lived_total > 25% Чем больше объектов, тем реже мы запускаем полную сборку Чем реже мы запускаем сборку, тем дольше она выполняется gc.get_threshold() == (2000, 10, 10)
spend a lot of the time in the GC forming transitive closures, both for marking and for the increments of the incremental GC. Unfortunately the current algorithm has a couple of mistakes in it. One harmful, one beneficial. • The beneficial one is counting the initial mark twice. This helps because it reduces the cost of GC on heaps with little or no garbage • The harmful one is allowing the amount of work done to grow in proportion to the heap size. GH-126491: Lower heap size limit with faster marking by markshannon · Pull Request #127519 · python/cpython