【发布时间】:2017-06-26 17:47:20
【问题描述】:
我正在尝试编写一个小型剪贴板记录器(适用于 linux),它侦听事件(剪贴板内容的更改)并将剪贴板内容写入文件(更改时)。
我想出的是一个带有剪贴板模块 pyperclip 的简单 while 循环:
import pyperclip
recent_value = ""
while True:
tmp_value = pyperclip.paste()
if tmp_value != recent_value:
recent_value = tmp_value
with open(".clipboard_history.txt", "a") as f:
f.write(recent_value + "\n")
所以我的第一个问题是,我真的可以运行一个 while True 循环来“收听”吗?或者这会消耗太多内存还是通常效率低下或不好的做法?
第二个问题是,我怎样才能像 shell 作业控制(和号)一样在后台运行它?
我应该选择像建议的here 这样的守护进程还是某种事件循环或线程魔法?
我基本上想要一些位于后台并监听事件(剪贴板内容更改),对其做出反应(写入文件)并再次等待的东西。
=============================
编辑:感谢您的输入! + 新问题:如果我使用线程,我还需要 sleep 方法吗?
【问题讨论】:
-
线程会浪费在这段代码上,因为这段代码只做了这个。但是,如果您的程序想做其他事情,而这段代码正在运行,那么只有在那时您才会想要使用线程。另一个例外是如果你有一个 GUI(会在程序下做其他事情)
标签: python loops events while-loop daemon