Python多线程 - 如何判断线程是否已在运行?

2 投票
1 回答
577 浏览
提问于 2025-04-18 00:20

我有一个线程用来处理数据。现在每当它在一个文件夹里发现新文件时就会触发。我是在用Python编程,但这可能是个更普遍的编程问题?

我有两个问题:

  1. 我应该使用这种触发方式(事件驱动的,差不多),还是应该用基于时间的方式(比如每3分钟创建一个新线程)?

  2. 如果我选择基于时间的方式并创建一个新线程,如果两个线程同时处理相同的数据,会不会出现问题?有没有办法让它们协同工作,或者在一个线程存在时不再创建第二个?

对于我这个问题可能显得有些幼稚,我对多线程和多进程还很陌生,所以还不太清楚什么时候该用什么。

1 个回答

1

根据我的理解,你是用一个单独的线程来处理每个新文件,这样就像一个服务器在用同一个程序处理多个请求一样。

1) 我觉得定时创建线程在你的情况下不太合适,因为这不考虑系统的性能或者需要处理的文件数量。你可以启动几个线程作为后台进程,然后有一个主线程负责在新任务到来时把任务分配给这些线程。如果同时到来的任务太多,你就可以选择不处理新的任务。另一方面,你也可以在每次有新文件出现时创建一个新线程来处理这个文件,等处理完了再用join把它合并回来。

2) 你可以明确地启动一个新线程,并给它传递文件名。是否可以让几个线程同时处理一个文件,取决于你具体对这个文件做了什么。一般来说,这样会比每个线程处理一个文件要复杂得多。

撰写回答