0

我喜欢使用 iPython 来运行对 mongodb 的查询。我有很多查询写成不同的函数调用。Mongo 可以同时支持多个查询,但我不知道如何使用 threading 或 Multiprocessing 模块来获取返回值。例如,如果我使用多处理,我将只使用处理类的一个实例来提交查询,然后让解释器将控制权返回给我,这样我就可以做其他事情了。

#queries.py
import pymongo
cursor = pymongo.MongoClient()['my_database']['my_collection']
def query_something(length):
    return cursor.find({"field":{"$gt":length}})

#its easy to do
ipython
>import queries
>thirty = queries.query_something(30)
####but I have to wait for this query to execute before I get the interpreter back
>thrity_five = queries.query_something(35)
###wait again

#now I want to thread this so I can do multiple instances
ipython
>import queries
>from multiprocessing import Process
>p1 = Process(target=queries.query_something,args=30)
>p2 = Process(target=queries.query_something,args=35)
>p1.start()
>p2.start()
#how do I get the return values?

现在,当我查看操作时,这两个查询都在运行。但是如何从 query_something 函数返回值。查询完成后,我尝试了 p1.join() 但什么都没有?如何在不必等待 ipython 解释器返回的情况下启动这两个进程?

Ĵ

4

1 回答 1

0

查看以下文档:在进程之间交换对象

于 2013-10-02T15:11:30.873 回答