Jos*_*one 9 python multithreading data-structures python-3.x
该队列-一个队列同步类只是说,
SimpleQueue 允许的函数较少。
对于多线程应用程序,我需要非常基本的队列功能,它对使用 SimpleQueue 有任何帮助吗?
小智 10
python 文档指定简单队列不能使用跟踪功能(task_done、join)。这些可用于跟踪队列中的每个项目已被另一个进程/线程处理。示例代码:
import threading, queue
q = queue.Queue()
def worker():
while True:
item = q.get()
print(f'Working on {item}')
print(f'Finished {item}')
q.task_done()
# turn-on the worker thread
threading.Thread(target=worker, daemon=True).start()
# send thirty task requests to the worker
for item in range(30):
q.put(item)
print('All task requests sent\n', end='')
# block until all tasks are done
q.join()
print('All work completed')
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,主线程使用 join 等待另一个线程完成处理它发送的每个项目。同时,工作线程每次处理队列中的项目时都会发出“任务完成”信号。在这种情况下,“任务”是队列中的一个项目。
希望这可以帮助,
有关更多文档,请访问:https ://docs.python.org/3/library/queue.html
queue.SimpleQueue处理的不仅仅是线程安全的并发。它处理可重入性-queue.SimpleQueue.put在可能会中断同一线程中的其他工作的不稳定情况下调用是安全的。例如,您可以安全地从__del__方法、weakref回调或signal模块信号处理程序中调用它。
如果需要,请使用queue.SimpleQueue.