找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1587|回复: 0

[求助] 什么原因?是不是Python的print把Command窗口搞死了???

2

主题

11

帖子

11

积分

贫民

积分
11
mandrake 发表于 2020-6-9 21:15:15 | 显示全部楼层 |阅读模式

我写了一个程序对1200多台设备进行ping轮询,ping采用Socket编程实现。由于设备太多,将ping的工作平均分配到120个线程里进行轮询。每隔30秒,将ping的结果按照某条件筛选出来,通过print输出到屏幕展示(stdout)。每次显示的记录条数大约在6~25之间。也就是说最多25行(每行不超过100个字节)。程序每隔2分钟写一次文件(覆盖写入,不到200KB)

这种显示方式决定了它只能在CMD下的Command窗口运行。为了让显示美观一些便于监控观察,我设置了Command窗口的显示属性,大概是:行数30、宽度120,背景灰白色,20号楷体粗体字。

这个程序在我的Windows 7下面运行正常(Command窗口的设置也完全相同),非常流畅。Windows 7的配置是i3处理器(2013年购置的电脑),16GB内存。
但是在Windows 10下,经常卡顿10多秒到1分多钟,最后运行半小时-1小时就会卡死。Windows系统没任何反应(Command窗口自然也不会再有输出),只能reboot。Windows 10电脑的配置是:i7 7900,  3.0GHz,16GB内存。

观察Windows 7和Windows 10(系统没有卡死的时候)的系统资源使用情况,CPU一直都在40%-50%之间,内存占用不到3GB

为什么在先进的Windows 10系统下、硬件配置强大很多的电脑上运行同样的程序,卡顿异常严重直至死机呢? 百思不得其解。

今天我不断尝试,发现问题似乎出现在Windows 10的Command窗口。因为我更改字体、缩小字号,对运行的流畅程度会有一定的改进。下班前我把Commnad窗口的属性还原,就是黑底、白色、默认字体,似乎流畅了起来 —— 因为时间太短不足以说明问题,等待明天的观察结果吧。

对这个问题我在网上粗略查询了一下,似乎有Windows 10下printf()输出被阻塞的问题反馈,会不会是这个原因呢?Windows10的cmd不如Windows 7 ? 另外MS似乎将要放弃CMD了,所以对Windows 10的CMD也不再优化?

请无忌的电脑高手帮忙诊断诊断,谢谢了!

ps:1.采用.bat批处理文件的方式启动我的py程序。2.Command窗口的“快速编辑”属性已经关闭。3.Python版本是3.8



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表