python - 在 python 中使用 cytpes 模块设置 MS 桌面背景太慢,无法像视频一样使用。
问题描述
tl;dr 使用 python 设置桌面背景的常用方法对于动画目的来说太慢了。我想知道是否有任何选项可以在不破坏计算机性能的情况下将背景设置为 O(5fps)。
~~~~
大家好!
前几天我对自己的这个想法感到兴奋:我想让我的桌面背景循环显示从 NASA 网站下载的最新太阳图像(来自 SDO)。它奏效了!我有一个在我的电脑后台运行的代码,每三十秒将我的桌面更新为来自互联网的最新图像(它还循环通过波长。非常有趣!。)真的很酷!每天看着它,看看太阳如何变化是很酷的。所以这是成功的。
但是太阳也有很多短期的动态,我也希望能够观察到!所以,我想,解决方案很简单!只需保留您下载的最后 30 张图像,然后快速为它们服务!循环很简单(提炼到基本组件):
import os
import ctypes
import time
#Get the filepaths of all pictures in a folder
folderPath = fromGod()
items = os.listdir(folderPath)
listOfFiles = [folderPath + item for item in items]
frameTime = 0.25 #second
runFor = 30 #seconds
#Cycle through the pictures
startTime = time.time()
while time.time() - startTime < runFor:
for file in listOfFiles:
ctypes.windll.user32.SystemParametersInfoW(20, 0, file , 0)
time.sleep(frameTime)
这确实有效!它看起来很不错,我什至会在它完全停止工作之前满足它似乎有能力的 4 fps。问题是每次调用 ctypes 函数都会导致整个系统{freeze?. 口吃?,慢点?}。它完全扼杀了这个想法,因为我无法让这段代码在后台运行。它使我的鼠标在我的屏幕上结结巴巴。
但是我看到存在可以使桌面背景变成电影的程序,所以我希望有其他方法可以在 python 中自己完成。我想我只是不明白为什么这个功能会对系统造成如此大的消耗。但是在这里搜索堆栈溢出和在谷歌上搜索的替代方法并没有取得成果。
我在戴尔 Windows 10 笔记本电脑上,以 Anaconda 形式运行 python 3.6.5。
解决方案
推荐阅读
- r - 在 R 中,如何计算满足条件的日期之间的差异?
- ios - 如何让我的 Ionic 4 应用程序长按选择文本?
- javascript - Sequelize include 在连接上使用 OR 语句
- vue.js - 在时间范围内路由回
- multithreading - 将每个 GStremer 管道运行到一个单独的 (GLib) 线程中
- wordpress - 谷歌云平台与其他托管
- r - 来自 quantmod R 包的 getSymbols 函数在实时交易期间未获得正确的日开盘价
- crystal-reports - 是否可以根据用户输入调整 Crystal Report 中的列数(从左到右)?
- mongodb - 给定一个对象数组,如何根据数组的每个匹配项过滤数据库中现有对象的结果?
- c# - 将 40/50 条记录插入 Azure 表存储有时需要超过 30 秒,因此会引发超时异常