data_queue = queue.Queue()
def start_indexing(files, queue):
...
if condition 1:
queue.put(data)
...
if queue.size() == Limit:
send_mail(queue)
for i in range(x):
thread= Thread(target= start_indexing, args = [file_chunks, data_queue])
thread.start()
total_threads.append(thread)
for thread in total_threads:
thread.join()
我的应用程序中有多个线程。每个线程将通过传递不同的参数值开始执行相同的函数。我正在使用一个公共队列来获取每个线程生成的数据。只要条件满足,线程就会将数据放入队列。 同样在该方法中,如果队列大小达到预定义的限制,我将发送电子邮件以支持用户使用队列数据。所以我需要从队列中一一获取数据。
所以我担心的是,当达到队列限制时,要发送邮件,线程需要从队列中一一获取。同时,如果另一个线程尝试将数据放入队列,则可能会出现第二个线程再次达到队列限制的情况。所以即使第一个线程没有完成它的执行,第二个线程也会尝试发送电子邮件。
这会发生吗?支持用户会收到多封包含重复队列数据的邮件吗? 请提出你的想法