Python多线程 - 如何判断线程是否已在运行?
我有一个线程用来处理数据。现在每当它在一个文件夹里发现新文件时就会触发。我是在用Python编程,但这可能是个更普遍的编程问题?
我有两个问题:
我应该使用这种触发方式(事件驱动的,差不多),还是应该用基于时间的方式(比如每3分钟创建一个新线程)?
如果我选择基于时间的方式并创建一个新线程,如果两个线程同时处理相同的数据,会不会出现问题?有没有办法让它们协同工作,或者在一个线程存在时不再创建第二个?
对于我这个问题可能显得有些幼稚,我对多线程和多进程还很陌生,所以还不太清楚什么时候该用什么。
1 个回答
1
根据我的理解,你是用一个单独的线程来处理每个新文件,这样就像一个服务器在用同一个程序处理多个请求一样。
1) 我觉得定时创建线程在你的情况下不太合适,因为这不考虑系统的性能或者需要处理的文件数量。你可以启动几个线程作为后台进程,然后有一个主线程负责在新任务到来时把任务分配给这些线程。如果同时到来的任务太多,你就可以选择不处理新的任务。另一方面,你也可以在每次有新文件出现时创建一个新线程来处理这个文件,等处理完了再用join
把它合并回来。
2) 你可以明确地启动一个新线程,并给它传递文件名。是否可以让几个线程同时处理一个文件,取决于你具体对这个文件做了什么。一般来说,这样会比每个线程处理一个文件要复杂得多。