(self, iterable, print_freq, header=None)
| 118 | self.meters[name] = meter |
| 119 | |
| 120 | def log_every(self, iterable, print_freq, header=None): |
| 121 | i = 0 |
| 122 | if not header: |
| 123 | header = "" |
| 124 | start_time = time.time() |
| 125 | end = time.time() |
| 126 | iter_time = SmoothedValue(fmt="{avg:.4f}") |
| 127 | data_time = SmoothedValue(fmt="{avg:.4f}") |
| 128 | space_fmt = ":" + str(len(str(len(iterable)))) + "d" |
| 129 | if torch.cuda.is_available(): |
| 130 | log_msg = self.delimiter.join( |
| 131 | [ |
| 132 | header, |
| 133 | "[{0" + space_fmt + "}/{1}]", |
| 134 | "eta: {eta}", |
| 135 | "{meters}", |
| 136 | "time: {time}", |
| 137 | "data: {data}", |
| 138 | "max mem: {memory:.0f}", |
| 139 | ] |
| 140 | ) |
| 141 | else: |
| 142 | log_msg = self.delimiter.join( |
| 143 | [ |
| 144 | header, |
| 145 | "[{0" + space_fmt + "}/{1}]", |
| 146 | "eta: {eta}", |
| 147 | "{meters}", |
| 148 | "time: {time}", |
| 149 | "data: {data}", |
| 150 | ] |
| 151 | ) |
| 152 | MB = 1024.0 * 1024.0 |
| 153 | for obj in iterable: |
| 154 | data_time.update(time.time() - end) |
| 155 | yield obj |
| 156 | iter_time.update(time.time() - end) |
| 157 | if i % print_freq == 0 or i == len(iterable) - 1: |
| 158 | eta_seconds = iter_time.global_avg * (len(iterable) - i) |
| 159 | eta_string = str(datetime.timedelta(seconds=int(eta_seconds))) |
| 160 | if torch.cuda.is_available(): |
| 161 | print( |
| 162 | log_msg.format( |
| 163 | i, |
| 164 | len(iterable), |
| 165 | eta=eta_string, |
| 166 | meters=str(self), |
| 167 | time=str(iter_time), |
| 168 | data=str(data_time), |
| 169 | memory=torch.cuda.max_memory_allocated() / MB, |
| 170 | ) |
| 171 | ) |
| 172 | else: |
| 173 | print( |
| 174 | log_msg.format( |
| 175 | i, |
| 176 | len(iterable), |
| 177 | eta=eta_string, |
no test coverage detected