我有一个用于处理数据的线程。现在它每次检测到文件夹中的新文件时都会触发。我在Python编码,但也许它更像是一个普通的编程问题?
我的问题是双重的:
我应该使用这样的触发器(事件驱动,或多或少),或者我应该使用基于时间的(每3分钟创建一个新线程)?
如果我选择基于时间并创建一个新线程,如果两个线程正在处理相同的数据,它不会导致问题吗?有没有办法告诉他们一起工作或不产生第二个(如果存在的话)?
我为我的问题的可能天真道歉,我对多线程和多重过程仍然很陌生,所以我仍然不知道何时使用什么。
答案 0 :(得分:1)
据我所知,您使用单独的线程处理任何新文件,因此它的行为类似于服务器使用单个例程处理多个请求。
1)我认为时间触发创建在您的情况下并不好,因为它不依赖于系统性能或要处理的文件数量。您可以运行一些线程作为守护进程,并有一个主线程,一旦它们到来就将任务分配给这些线程。如果同时存在太多,则只需删除新任务。另一方面,您可以创建一个新线程,每次出现新文件时进行处理,然后在处理完成后join
进行处理
2)您可以明确地开始给它新的线程文件名。一个线程同时使用单个文件是否可能取决于您对该文件的确切处理方式。一般来说,它变得比每个线程的单个文件更复杂