Python每秒的截图速度是否可能超过10个?

Python每秒的截图速度是否可能超过10个?,python,pillow,Python,Pillow,现在我需要一个非常快速的截屏器,将截图输入CNN,CNN将根据截图更新鼠标移动。我希望对中介绍的相同类型的行为进行建模,并且类似地对图6中的步骤进行建模(没有极坐标转换)。由于需要非常快速的输入,我已经搜索了一些,并且能够稍微修改这个脚本,输出10fps from PIL import ImageGrab from datetime import datetime while True: im = ImageGrab.grab([320, 180, 1600, 900]) dt

现在我需要一个非常快速的截屏器,将截图输入CNN,CNN将根据截图更新鼠标移动。我希望对中介绍的相同类型的行为进行建模,并且类似地对图6中的步骤进行建模(没有极坐标转换)。由于需要非常快速的输入,我已经搜索了一些,并且能够稍微修改这个脚本,输出10fps

from PIL import ImageGrab
from datetime import datetime

while True:
    im = ImageGrab.grab([320, 180, 1600, 900])
    dt = datetime.now()
    fname = "pic_{}.{}.png".format(dt.strftime("%H%M_%S"), dt.microsecond // 100000)
    im.save(fname, 'png') 

我能期待更快的吗?如果可以的话,我可以使用不同的程序。

写入磁盘的速度非常慢,这可能是导致循环花费这么长时间的一个主要原因。尝试注释
im.save()
行,查看可以捕获多少屏幕截图(添加
计数器
变量或类似于计算捕获多少屏幕截图的内容)

假设磁盘I/O是瓶颈,您将希望将这两个任务分开。有一个循环只捕获屏幕截图并将其存储在内存中(例如,存储到以时间戳为键的字典中),然后在单独的线程中从字典中拉出元素并将其写入磁盘


如果您以前没有在Python中做过很多工作,请参阅以获取有关线程的指针。

写入磁盘的速度非常慢,这可能是导致循环花费如此长时间的主要原因。尝试注释
im.save()
行,查看可以捕获多少屏幕截图(添加
计数器
变量或类似于计算捕获多少屏幕截图的内容)

假设磁盘I/O是瓶颈,您将希望将这两个任务分开。有一个循环只捕获屏幕截图并将其存储在内存中(例如,存储到以时间戳为键的字典中),然后在单独的线程中从字典中拉出元素并将其写入磁盘


如果您以前没有做过很多关于Python线程的指导,请参阅。

您需要完整的屏幕截图吗?如果你只需要鼠标坐标的话,可能有一种直接捕捉鼠标坐标的方法。啊,谢谢:P找不到它。光标的移动将根据屏幕截图上的其他元素进行移动,就像纸上的玩家根据游戏中的墙壁改变位置一样。你使用的是SSD吗?不,我不知道为什么我不认为磁盘是一个瓶颈。。。嗯。我很笨。在我的例子中,我只需要将它学习到我的脚本中,以便在CNN中短暂使用,这样我就不需要将它保存到我已经知道如何做的磁盘中。我现在很不好意思问这个问题:PDo你需要完整的截图吗?如果你只需要鼠标坐标的话,可能有一种直接捕捉鼠标坐标的方法。啊,谢谢:P找不到它。光标的移动将根据屏幕截图上的其他元素进行移动,就像纸上的玩家根据游戏中的墙壁改变位置一样。你使用的是SSD吗?不,我不知道为什么我不认为磁盘是一个瓶颈。。。嗯。我很笨。在我的例子中,我只需要将它学习到我的脚本中,以便在CNN中短暂使用,这样我就不需要将它保存到我已经知道如何做的磁盘中。Eeeee我现在很不好意思问这个问题:POh你说得对,我磁盘中的严重瓶颈。在我的例子中,我实际上不需要将文件保存到磁盘,我只需要在tensorflow中读取它们。我想我可以直接在tf脚本中使用图像抓取来使用,这似乎是20-30 fps,这是我所需要的:)我不确定为什么我没有想到这一点,但现在这一切似乎都很明显。非常感谢你的回答!这可能为我节省了很多时间(很高兴我能帮上忙:)哦,你说得对,我的磁盘出现了严重的瓶颈。在我的例子中,我实际上不需要将文件保存到磁盘,我只需要在tensorflow中读取它们。我想我可以直接在tf脚本中使用图像抓取来使用,这似乎是20-30 fps,这是我所需要的:)我不确定为什么我没有想到这一点,但现在这一切似乎都很明显。非常感谢你的回答!这可能为我节省了很多时间(很高兴我能帮上忙:)