Python 需要改进性能。使用PIL拍摄数千张截图

Python 需要改进性能。使用PIL拍摄数千张截图,python,image,performance,screenshot,python-imaging-library,Python,Image,Performance,Screenshot,Python Imaging Library,所以我要做的是截屏,得到像素的RGB值,然后把它放到另一张图片中。代码可以在下面或下面找到。一切正常,只是速度慢,并且使系统也有点慢(当睡眠时间为0时) 我试过用100像素的图像,大约用了19分钟。这是很多考虑,我需要一个更大的图像,以获得更好的和可用的脚本 我如何: 让脚本快得多 让它使用更少的系统资源 你想做什么?好吧,你不能以一种有效的方式拍摄数千张截图。时期你必须找到另一种方法来实现你想要的,没有更多的上下文,我们无法帮助你。为什么你要为图像中的每个像素抓取一次屏幕截图?这看起来效率很

所以我要做的是截屏,得到像素的RGB值,然后把它放到另一张图片中。代码可以在下面或下面找到。一切正常,只是速度慢,并且使系统也有点慢(当睡眠时间为0时)

我试过用100像素的图像,大约用了19分钟。这是很多考虑,我需要一个更大的图像,以获得更好的和可用的脚本

我如何:

  • 让脚本快得多
  • 让它使用更少的系统资源

你想做什么?好吧,你不能以一种有效的方式拍摄数千张截图。时期你必须找到另一种方法来实现你想要的,没有更多的上下文,我们无法帮助你。为什么你要为图像中的每个像素抓取一次屏幕截图?这看起来效率很低-你不应该抓一次吗,在嵌套for循环之外?就像@Bakuriu所说的:如果你试图解释你要解决的问题以及最终结果应该是什么,那么这可能是你可以得到更好答案的时候之一。分析你的代码并确定它在哪里花费了大部分时间。而不是编辑你的问题“编辑:nvm,我改变了我的算法,现在一切都很好”,请你把你的解决方案作为一个答案发布出来好吗?它可能会帮助其他偶然发现它的人。谢谢!
import time

import Image
import ImageGrab

X = 0 # seconds to pause before taking next pixel
WIDTH = 300 # the width of the image drawn, higher number = slower
HEIGHT = 300 # the height of the image drawn, higher number = slower

if __name__ == '__main__':

    #start = time.time()

    pixels_img = Image.new('RGB', (WIDTH, HEIGHT), 'black') # create a new Image instance
    pixels = pixels_img.load()

    for w in xrange(WIDTH):
        for h in xrange(HEIGHT):
            img = ImageGrab.grab() # take a screenshot
            img = img.resize((WIDTH, HEIGHT)) # create a thumbnail
            pixels[w, h] = img.getpixel((w, h)) # pixels(x, y) = (r, g, b)
            time.sleep(X)

    pixels_img.save('pixel.png', 'PNG')
    pixels_img.show()
    #print time.time() - start