0

iPython を使用して mongodb へのクエリを実行するのが好きです。さまざまな関数呼び出しとして書かれたクエリがたくさんあります。Mongo は一度に複数のクエリをサポートできますが、スレッドまたはマルチプロセッシング モジュールを使用して戻り値を取得する方法がわかりません。たとえば、マルチプロセッシングを使用する場合、Processing クラスのインスタンスを使用してクエリを送信し、インタープリターが制御を返して他のことを実行できるようにします。

#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 インタープリターが戻るのを待たずに、これらのプロセスの両方を開始するにはどうすればよいですか?

J

4

1 に答える 1

0

次のドキュメントを確認してください:プロセス間でオブジェクトを交換する

于 2013-10-02T15:11:30.873 に答える