下面代码怎么优化 def update_running_state_to_restore(self): # Get audits that should be stashed. need_stash_audits = self.get_need_rollback_audits() need_suspend_audits = [] need_rollback_audits = [] for audit in need_stash_audits: self.record_audit_init_state(audit) if audit.goal.name in ['saving_energy', 'power_limit']: need_rollback_audits.append(audit) else: need_suspend_audits.append(audit) LOG.info("Audits need suspend are: %s", need_suspend_audits) LOG.info("Audits need rollback are: %s", need_rollback_audits) # The drs audits should be stopped in a timely manner, # so need to handle the drs audits first. for audit in need_suspend_audits: if audit.state == objects.audit.State.ONGOING: LOG.info("Suspend non-dpm audit: %s", audit.uuid) audit.state = objects.audit.State.SUSPENDED audit.save() for audit in need_rollback_audits: LOG.info("Begin to roll back audit: %s", audit.uuid) self.dc_client.rollback_audit(self.context, audit.uuid) # Confirm that the audit is rolled back completely self.confirm_audit_rolled_back(audit) disabled_nodes = self.get_watcher_disabled_nodes() LOG.info("Audits have all been updated, disabled nodes by watcher: %s", disabled_nodes) self.running_state.stash_audits = self.stash_audits self.running_state.watcher_disabled_nodes = disabled_nodes
时间: 2024-04-10 13:34:53 浏览: 35
这段代码可以进行一些优化。首先,可以使用列表推导式来简化对need_stash_audits的计算。
```python
need_stash_audits = [audit for audit in self.get_need_rollback_audits()]
```
接下来,可以使用两个列表推导式来替代for循环和if语句,将需要回滚和需要暂停的审计分别提取出来。
```python
need_rollback_audits = [audit for audit in need_stash_audits if audit.goal.name in ['saving_energy', 'power_limit']]
need_suspend_audits = [audit for audit in need_stash_audits if audit not in need_rollback_audits]
```
然后,可以使用列表推导式和条件表达式来简化循环中的if语句。这样可以减少代码行数并提高可读性。
```python
for audit in need_suspend_audits:
LOG.info("Suspend non-dpm audit: %s", audit.uuid)
audit.state = objects.audit.State.SUSPENDED if audit.state == objects.audit.State.ONGOING else audit.state
audit.save()
for audit in need_rollback_audits:
LOG.info("Begin to roll back audit: %s", audit.uuid)
self.dc_client.rollback_audit(self.context, audit.uuid)
self.confirm_audit_rolled_back(audit)
```
最后,注意到在代码的最后几行中,通过赋值操作更新了`self.running_state`的两个属性。可以将这两个属性的赋值操作放在代码的开头,以便更早地更新状态。
```python
self.running_state.stash_audits = self.stash_audits
self.running_state.watcher_disabled_nodes = self.get_watcher_disabled_nodes()
LOG.info("Audits have all been updated, disabled nodes by watcher: %s", self.running_state.watcher_disabled_nodes)
```
通过这些优化,可以使代码更简洁、可读性更高,并且提高执行效率。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)