Google Colab中Jupyter Notebook输出顺序与代码执行顺序不符问题咨询
输出顺序错位原因
print输出属于标准输出流(stdout)的文本内容,是同步执行的,代码运行到print行时会立刻把文本内容推送到Jupyter前端展示,延迟非常低。nx.draw默认使用matplotlib作为绘图后端,绘图操作不会立刻触发前端展示:所有绘图数据会先在后端内存中生成画布,默认规则是等当前单元格的全部代码执行完毕后,才会把内存中的画布转换为图片格式,传输到前端完成渲染展示。- Google Colab的前后端交互机制也会加剧这个顺序差异:文本内容体积极小,传输和渲染速度远快于图片资源,就算二者同时推送到前端,文本也会先完成展示。
修复方案
如果需要严格按照代码编写顺序,先展示图再输出打印内容,只需在nx.draw代码后手动调用plt.show(),强制立刻刷新输出当前画布即可,修改后的代码示例如下:
import networkx as nx import matplotlib.pyplot as plt num_nodes = 4 G = nx.DiGraph(nx.path_graph(num_nodes)) nx.draw(G, with_labels = True) plt.show() # 强制立即输出绘图结果 pr = nx.pagerank(G, alpha=0.8) print(pr)
内容的提问来源于stack exchange,提问作者amiref
相关产品推荐
相关产品推荐

