Я работаю над проектом сделать снимки экрана рабочего стола и изображения загрузки к серверу, я хочу разработать приложение Python, когда пользователь запустит то приложение, это начнет делать снимки экрана в случайном интервале как между 2-5 минутами интервала, у меня есть код, который сделает снимок экрана, и я протестировал его на человечности, это работает правильно. Код для получения снимка экрана
import gtk.gdk
import time
w = gtk.gdk.get_default_root_window()
sz = w.get_size()
print "The size of the window is %d x %d" % sz
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
ts = time.time()
filename = "screenshot"
filename += str(ts)
filename += ".png"
if (pb != None):
pb.save(filename,"png")
print "Screenshot saved to "+filename
else:
print "Unable to get the screenshot."
Я хочу выполнить этот код в случайном интервале 2-5 минут, как я могу разработать сценарий, который выполнит этот код в потоке.
#!/usr/bin/env python
import gtk.gdk
import time
import random
while 1 :
# generate a random time between 120 and 300 sec
random_time = random.randrange(120,300)
# wait between 120 and 300 seconds (or between 2 and 5 minutes)
print "Next picture in: %.2f minutes" % (float(random_time) / 60)
time.sleep(random_time)
w = gtk.gdk.get_default_root_window()
sz = w.get_size()
print "The size of the window is %d x %d" % sz
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
ts = time.time()
filename = "screenshot"
filename += str(ts)
filename += ".png"
if (pb != None):
pb.save(filename,"png")
print "Screenshot saved to "+filename
else:
print "Unable to get the screenshot."
Я бы соблазнился передать это во внешнюю библиотеку, такую как PyScreenshot .
Пусть он справится с тяжелой работой (например, определит, какой DM и экранный API ему нужен), предоставляя вам изображение PIL, которое вы можете сохранить на диск или вывести в виде файла для загрузки.
Существует множество ответов , которые делают это вручную при переполнении стека , если вы настроены на «сделай сам».
Что касается интервала, нужно ли это нарезать? Может ли сценарий не просто работать сам по себе, а затем после того, как он сделал снимок, спать в течение произвольного периода времени (от 120 до 300 секунд)?
import random
import time
time.sleep(random.randrange(120, 300))