首先我要说的是,除了 javascript 之外,我从未使用过任何其他语言来执行过事件和触发器。
我有一个线程运行并处理文件夹中的所有文件。我希望每次有新文件写入该文件夹时都运行该线程。我认为事件可以做到这一点,但我不知道如何在 python 中做到这一点。
如何告诉线程抛出或触发事件?另一个线程如何接收这个?
示例线程:
def list_files_thread(dir):
for filename in os.listdir(dir):
print filename
thread.start_new_thread(list_files_thread, ('output',))
编辑: 我是多线程新手,所以也许我应该使用它?
class list_files_thread(threading.Thread):
def __init__(self, directory):
self.directory = directory
def run(self):
list_files(self.directory)
def list_files(directory_path):
for filename in os.listdir(directory_path):
print filename
最佳答案
嗯,触发异步事件的典型方法是使用 signal
模块。正如文档所述,信号不能用于线程间通信,因此线程在这种情况下是不合适的。当然,你也可以使用threading.Condition
来使用线程对象。
话虽如此,异步事件、线程和信号令人困惑并且难以正确实现。您确定要重新发明轮子吗? (你很可能是;我只是想检查一下。)如果不是,watchdog
提供您所需的确切功能。
关于python - Python 中的事件监听和处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22691326/