两个线程可以在python队列中同时执行put和get操作吗?

时间:2021-06-19 13:22:59

标签: python-3.x queue python-multithreading

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()

我的应用程序中有多个线程。每个线程将通过传递不同的参数值开始执行相同的函数。我正在使用一个公共队列来获取每个线程生成的数据。只要条件满足,线程就会将数据放入队列。 同样在该方法中,如果队列大小达到预定义的限制,我将发送电子邮件以支持用户使用队列数据。所以我需要从队列中一一获取数据。

所以我担心的是,当达到队列限制时,要发送邮件,线程需要从队列中一一获取。同时,如果另一个线程尝试将数据放入队列,则可能会出现第二个线程再次达到队列限制的情况。所以即使第一个线程没有完成它的执行,第二个线程也会尝试发送电子邮件。

这会发生吗?支持用户会收到多封包含重复队列数据的邮件吗? 请提出你的想法

0 个答案:

没有答案
相关问题