python - Python 中的事件监听和处理

标签 python multithreading events listener

首先我要说的是,除了 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/

相关文章:

java - 线程和创建对象

javascript - javascript 中的事件不起作用

javascript - 手动触发触摸事件

python - 如何对高密度图进行聚类

java - Eclipse 插件和线程

python - cb_kwargs 中的 'cb' 代表什么?

c++ - 在循环中创建线程

javascript - 如何编写 QUnit 测试来测试事件?

python - 在Python session 中保存变量?

python - 如何在按键时连续移动pygame中的表面?