返回的结果是随机的,而不是在python中的行(\ n)?

时间:2016-01-22 08:50:09

标签: python mongodb

我编写应用程序以在MongoDB中选择值时检查性能。 完成后的计算器时间。

但是我的应用程序显示结果像随机字符而不是下线(\ n)。 像这样:the images show my console when run application

更新: 我改变了我的代码。但这也不适合我。

import sys
import os
from pymongo import MongoClient
import random
import pymongo
import time
from datetime import datetime
import multiprocessing

def mongoSelectStatement(result_queue):
    client = MongoClient('mongodb://localhost:27017')
    db = client.random

    cursor = db.random.find()

    for document in cursor:
        result_queue.put(document)

def main():
    processes = []
    result_queue = multiprocessing.Queue()
    startTime = datetime.now()
    for i in range(100):
        p = multiprocessing.Process(target=mongoSelectStatement, args=[result_queue])
        p.start()
        processes.append(p)

    print "Doi ket qua tra ve..."

    result = result_queue.get()

    for p in processes:
        p.terminate()
    endTime = datetime.now()
    print "Kqua tra ve: ", result, ' trong thoi gian ', (endTime - startTime)

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

您的多处理方法变得疯狂。在打印命令完成之前,另一个进程的打印命令开始打印输出,从而产生垃圾值。删除多处理,按顺序运行所有内容,或阅读MultiProcessing map或Queue,它们跟踪作业顺序,从而按顺序给出结果。 请查看for reference.

另一种方法是将所有输出传递给队列,等待所有作业完成执行,然后按顺序打印结果。这样做会更好,因为您不必编辑大量代码。只需将值集附加到列表中,最后打印即可。唯一的区别是,您会在某个时间(所有工作完成后)看到输出