【发布时间】:2021-08-08 06:30:09
【问题描述】:
我认为这可能是一个简单的问题,但我似乎无法理解这一点。考虑下面的示例代码。
def 1_processing(search_query, q):
''' Do some data http data fetching using Python 'Requests' - may take 5 to 20 seconds'''
q.put(a)
q.put(b)
''' Two to three items to be put into the queue'''
def 2_processing(search_query, q):
''' Do some http data fetching using Python 'Requests' - may take 5 to 20 seconds'''
q.put(x)
q.put(y)
q.put(z)
''' Two to three items to be put into the queue'''
q = queue.Queue()
''' Start the threads asynchronously'''
t1 = threading.Thread(target=1_processing, args=('search_query', q))
t2 = threading.Thread(target=2_processing, args=('search_query', q))
t1.start()
t2.start()
我正在尝试运行两个异步进程,然后在收到数据后立即使用数据(通过队列),而无需等待其中一个或两个进程完成。
如何在收到队列数据后立即使用它?
我知道我可以做一个简单的 q.get() 但我事先不知道队列大小。我也不想加入 (t1.join, t2.join()) 进程,因为这意味着程序将花费太长时间并且不会在收到数据后立即显示。我希望能够在收到数据后立即显示数据,并且在我从队列中获取数据时知道进程何时完成。
谢谢。
【问题讨论】:
-
您可能误解了队列范式。我将整理一个示例并尽快作为答案发布
标签: python multithreading queue