Jim*_*myK 5 python queue multithreading
我有一个生成器会生成超过 1 万亿个字符串,我想把它们放在一个队列中,让一个工作池来消耗这个队列。但是,我无法将整个 1 万亿个字符串放入内存中并将它们映射到线程。
生成器非常快,消费工人不是。我需要将队列的长度保持在一定水平,以免破坏我的记忆。这意味着我需要找到一种方法来暂停和重新启动队列。
任何人都可以提供有关如何在 Python 3.4 中完成此任务的提示吗?
您可以指定队列的最大大小:
q = queue.Queue(10) # max size of the queue is 10
Run Code Online (Sandbox Code Playgroud)
当队列达到最大大小时,新插入将阻塞,直到项目从队列中删除。
您的生成器线程可以只生成项目并将它们放在队列中。如果它超出消费者线程太远,它就会阻塞。
while not done:
e = generate next item
q.put(e) # will block if queue is full
Run Code Online (Sandbox Code Playgroud)
看:
https://docs.python.org/3/library/queue.html
了解更多信息。