使用Python,每秒可以快10个屏幕截图吗?

时间:2017-07-04 04:53:11

标签: python pillow

现在,我需要一个非常快速的截屏工具,将截图提供给CNN,根据屏幕截图更新鼠标移动。我希望模拟this paper中呈现的相同类型的行为,并且类似地执行图6中的步骤(没有极化转换)。由于需要非常快速的输入,我已经搜索了一下并且能够稍微修改这个脚本from here输出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') 

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

1 个答案:

答案 0 :(得分:2)

写入磁盘非常慢,并且可能是使循环花费这么长时间的重要部分。尝试评论im.save()行并查看可捕获的屏幕截图数量(添加counter变量或类似内容以计算捕获的屏幕截图数量。)

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

如果您之前没有做过多少工作,请参阅this question以获取有关Python中线程的指示。