我编写应用程序以在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()
答案 0 :(得分:0)
您的多处理方法变得疯狂。在打印命令完成之前,另一个进程的打印命令开始打印输出,从而产生垃圾值。删除多处理,按顺序运行所有内容,或阅读MultiProcessing map或Queue,它们跟踪作业顺序,从而按顺序给出结果。 请查看for reference.
另一种方法是将所有输出传递给队列,等待所有作业完成执行,然后按顺序打印结果。这样做会更好,因为您不必编辑大量代码。只需将值集附加到列表中,最后打印即可。唯一的区别是,您会在某个时间(所有工作完成后)看到输出