Ich möchte ein einfaches Python-Skript im Hintergrund ausführen, das Text aus der Zwischenablage liest und druckt. Hier ist mein Code.
#!/usr/bin/env python
import Tkinter
last_clipboard = ""
def get_clipboard():
global last_clipboard
root = Tkinter.Tk()
root.withdraw() # Hide the main window (optional)
text_in_clipboard = root.clipboard_get()
if text_in_clipboard != last_clipboard:
last_clipboard = text_in_clipboard
print last_clipboard
while True:
get_clipboard()
Dies funktioniert wie erwartet, verbraucht jedoch zu viel CPU (100% CPU).
Wie kann ich es richtig machen, ohne so viel zu verbrauchen?
Antworten:
Sie haben das
time.sleep()
in Ihrerwhile
Schleife vergessen , laut dieser Antwort ist SO- Sleeping für 0.2s ein guter Kompromiss zwischen Polling-Frequenz und CPU-Last:Das Überprüfen der Zwischenablage alle 0,2 Sekunden scheint häufig genug zu sein. Wenn Sie weniger CPU-Auslastung möchten, können Sie diesen Wert sogar erhöhen. Nur wenige Benutzer ändern den Inhalt der Zwischenablage von einer Sekunde zur nächsten.
Beachten Sie, dass im Allgemeinen das Abrufen in einer Schleife so oft nicht als gutes Design angesehen wird. Ein besserer Ansatz wäre, auf den Fall einer Änderung des Inhalts der Zwischenablage zu reagieren. Ein Beispiel für GTK finden Sie in dieser SO-Antwort .
Weitere Lektüre
time.sleep()
time.sleep()
quelle
Ich mache es endlich ohne Schleife. Dies ist der Code:
Ich musste einige Module installieren:
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0
Wählen Sie einfach die für Sie passende Lösung.
quelle
clip.wait_for_text()
zweimal?Sie führen das Ding in einer
while True:
Schleife! Das bedeutet, dass die CPU ständig Ihre Schleife ausführt. Fügen Sie dort einfach eine kleine Pause hinzu, und Sie sollten feststellen, dass die CPU-Auslastung stark abfällt:quelle
Ich war fasziniert von diesem Projekt und schrieb ein Bash-Skript für diejenigen, die sich in dieser Umgebung besser auskennen:
Dafür ist das Xorg-
xclip
Paket erforderlich :Der Inhalt der Zwischenablage wird mit dem
cat
Befehl auf dem Bildschirm abgelegt . Wenn Sie stattdessen einen Ausdruck wünschen, ersetzen Sie ihncat
durchlp
und geben Sie Ihren Druckernamen, die Ausrichtung und möglicherweise die Option "An Seite anpassen" an.Sie werden eine gewisse Verzögerung auf dem Bildschirm bemerken, da ich auswähle,
sleep 1.0
was mit einem Drucker nicht zu bemerken wäre und immer noch schneller ist, als Menschen Text hervorheben und Ctrl+ verwenden können C.Wenn Sie genau denselben hervorgehobenen Text in die Zwischenablage kopieren, wird kein Unterschied ausgelöst. Ein Buchstabe mehr oder weniger löst eine Antwort aus.
quelle