python 重定向输出到queue队列
时间: 2023-06-04 10:07:17 浏览: 180
您好,关于您的问题,可以使用Python的multiprocessing模块中的Queue类来实现重定向输出到queue队列。具体的实现方式可以参考如下代码:
```
import sys
from queue import Queue
from threading import Thread
class QueueOutput:
def __init__(self):
self.queue = Queue()
self.thread = Thread(target=self.enqueue_output)
self.thread.daemon = True
self.thread.start()
def enqueue_output(self):
while True:
line = sys.stdout.readline()
self.queue.put(line)
def read(self):
return self.queue.get()
def flush(self):
pass
def write(self, msg):
sys.stdout.write(msg)
sys.stdout.flush()
self.queue.put(msg)
q = QueueOutput()
sys.stdout = q
```
在上述代码中,我们创建了一个名为QueueOutput的类,该类重载了Python的sys.stdout对象,使得输出的内容被重定向到队列中,这样就可以通过调用read()方法获取队列中存储的输出信息。在调用read()方法时,如果队列中没有数据,该方法会阻塞直到队列中有数据。
阅读全文