Spaces:
Running
Running
| from functools import reduce | |
| import shutil | |
| import time | |
| import os | |
| def get_cur_time_str(): | |
| """Get the current timestamp string like '20210618123423' which contains date and time information. | |
| Returns: | |
| str: Current timestamp string. | |
| """ | |
| return time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())) | |
| def formatted_arr(arr, format=':.4f'): | |
| if not isinstance(arr, (list, tuple)): | |
| return ('{' + format + '}').format(arr) | |
| return [formatted_arr(i) for i in arr] | |
| def is_in_jupyter_nb(): | |
| try: | |
| get_ipython | |
| return True | |
| except: | |
| return False | |
| def backup_key_codes(target_dir, key_code_dirs=['data', 'dnns', 'experiments', 'methods', 'utils']): | |
| from .log import logger | |
| this_dir = os.path.dirname(__file__) | |
| project_root_dir = os.path.abspath(os.path.join(this_dir, '../../')) | |
| # key_code_dirs = [ | |
| # 'dg', | |
| # 'experiments_trial', | |
| # 'methods', | |
| # 'models', | |
| # 'utils' | |
| # ] | |
| key_file_exts = ['py'] | |
| def _ignore(cur_dir_path, cur_dir_content_list): | |
| if not reduce(lambda res, cur: cur in cur_dir_path or res, key_code_dirs, False): | |
| return cur_dir_content_list | |
| ignored_content_list = [] | |
| for content in cur_dir_content_list: | |
| if os.path.isfile(os.path.join(cur_dir_path, content)) and \ | |
| not reduce(lambda res, cur: content.endswith(cur) or res, key_file_exts, False): | |
| ignored_content_list += [content] | |
| return ignored_content_list | |
| for key_code_dir in key_code_dirs: | |
| shutil.copytree( | |
| os.path.join(project_root_dir, key_code_dir), | |
| os.path.join(target_dir, key_code_dir), | |
| ignore=shutil.ignore_patterns('*.log', 'log', 'results', 'ckpt', 'ckpts', '125m_ckpt', '1.3B_ckpt', '__pycache__', '*.pyc', '*.bin', '*.pt', '*.pth', '*.np', '*.npz') | |
| ) | |
| logger.info(f'backup key codes in {key_code_dirs}') | |
| import os, sys | |
| class HiddenPrints: | |
| def __enter__(self): | |
| self._original_stdout = sys.stdout | |
| sys.stdout = open(os.devnull, 'w') | |
| def __exit__(self, exc_type, exc_val, exc_tb): | |
| sys.stdout.close() | |
| sys.stdout = self._original_stdout | |
| def monitor_process_writing_files(pid): | |
| # https://stackoverflow.com/questions/120656/directory-listing-in-python | |
| from os import listdir | |
| from os.path import isfile, join | |
| files = [f for f in listdir('/proc/' + str(pid) + '/fd') if isfile(join('/proc/' + str(pid) + '/fd', f))] | |
| files = [os.path.realpath('/proc/' + str(pid) + '/fd/' + f) for f in files] | |
| files = list(set(files)) | |
| return files | |
| if __name__ == '__main__': | |
| # backup_key_codes() | |
| monitor_process_writing_files(34341) |