使用 Python 在游戏切换到后台后将游戏进程挂起(暂停)会被视为作弊吗?目的是节省 cpu 资源

295 天前
 zictos

在 windows 上,假设游戏进程的 pid 是 1234 。

在 python 中执行 psutil.Process(1234).suspend()就可以挂起游戏进程,游戏就不会占用任何 cpu 了,声音也会自动静音。

当 python 判断到游戏切换到前台后,就执行 psutil.Process(1234).resume(),这样就可以快速恢复游戏进程。整个过程的话游戏的代码执行状态不会改变,内存数据也不会改变。

主要是有时候游戏启动太慢,所以想一直开启,又不想在后台运行时占用 cpu 资源,只让游戏在前台运行时快速恢复进程。其实很多比较占资源的程序都可以这么操作,相当于将程序切换到后台后就让程序进入睡眠状态了。我感觉对于游戏公司来说,这样做应该就跟电脑进入了睡眠状态之后再唤醒差不多。

2918 次点击
所在节点    Python
30 条回复
Shatyuka
295 天前
感觉不如切大地图,会停止 3D 渲染
murmur
294 天前
没必要,我记得剑三切后台就是锁 30 帧停部分渲染,人家知道你要躲开
qscasdqwezxc
294 天前
暂停 10ms 运行 1ms 这样
zictos
294 天前
@cnbatch #17 你提供了 stackoverflow 链接中说了 windows 资源监视器中可以手动暂停进程,试了一下还真的可以,但好像不能恢复。
zictos
294 天前
@Terminl #19 原神不会强制关闭游戏或强制重新登录。哪怕你电脑进入睡眠状态了或者休眠了,之后恢复后游戏一般也会自动恢复
zictos
294 天前
@crab #20 如果游戏会这么做,那就最好了。不过如果后台依然很占资源就只能自己想办法了。

@Shatyuka #21 原神一般打开物品栏或者打开地图,游戏中的战斗其实都会停止的,cpu 也会降低,但降低不了太多。这个应该重点是减少显卡的使用率。

@murmur #22 剑三这种应该不能像原神一样快速恢复,锁 30 帧应该还是会有一定 cpu 占用的。另外非游戏也有用的,比如 pycharm 有时候在后台也会突然 cpu 变高,可以判断 pycharm 内是否有其他脚本在运行,如果没有就切换到后台 15-30 分钟后自动暂停。平时保持后台运行比较方便,除非能做到 1-3 秒就启动完成。电脑最理想的状态就是大部分时候保证 cpu 的可用率一直在 90%以上,这样平时真正要运行什么的时候就很快。
zictos
294 天前
@qscasdqwezxc #23
试了一下这样游戏还能正常玩,只是稍微有一点点卡,cpu 没降多少。如果暂停 1s ,运行 1ms ,那 cpu 就大概只占 1%了。
pid = 32933
import psutil, time
while True:
psutil.Process(pid).suspend()
time.sleep(0.01)
psutil.Process(pid).resume()
time.sleep(0.001)
DeWjjj
294 天前
会掉线得,不行。
zictos
294 天前
@DeWjjj #28 可以试试 27 楼的方法,可能不会掉线,具体时间自己定,暂停 10ms 运行 1ms ,这样无限循环的话,我试了游戏还可以正常玩
miaomiao888
294 天前
其實就是無響應,比如電腦性能太差也會自然發生,不會有問題
在 GTA 送貨的時候如果被人攻擊立馬暫停進程十秒即可卡入單人戰局
手動也可以,利用任務管理器暫停
<amp-youtube data-videoid="K2J2NThiJn0" layout="responsive" width="480" height="270"></amp-youtube>?t=39

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/962671

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX