MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

पाइमोंगो मल्टीप्रोसेसिंग

आपका कोड आपके उदाहरण में लाखों दस्तावेज़ों में से प्रत्येक के लिए एक नया MongoClient बनाता है (ठीक उसी तरह जैसे कि आपने जिस प्रश्न से लिंक किया है)। इसके लिए आपको प्रत्येक नई क्वेरी के लिए एक नया सॉकेट खोलना होगा। यह पायमोंगो के कनेक्शन पूलिंग को हरा देता है, और बेहद धीमी गति से होने के अलावा, इसका मतलब यह भी है कि आप अपने टीसीपी स्टैक की तुलना में तेजी से सॉकेट खोलते और बंद करते हैं:आप TIME_WAIT स्थिति में बहुत सारे सॉकेट छोड़ते हैं ताकि आप अंततः बंदरगाहों से बाहर हो जाएं।

यदि आप प्रत्येक क्लाइंट के साथ बड़ी संख्या में दस्तावेज़ सम्मिलित करते हैं, तो आप कम क्लाइंट बना सकते हैं, और इसलिए कम सॉकेट खोल सकते हैं:

import multiprocessing as mp
import time
from pymongo import MongoClient

documents = [{"a number": i} for i in range(1000000)]

def insert_doc(chunk):
    client = MongoClient()
    db = client.mydb
    col = db.mycol
    col.insert_many(chunk)

chunk_size = 10000

def chunks(sequence):
    # Chunks of 1000 documents at a time.
    for j in range(0, len(sequence), chunk_size):
        yield sequence[j:j + chunk_size]

time2s = time.time()
pool = mp.Pool(processes=16)
pool.map(insert_doc, chunks(documents))
pool.close()
pool.join()
time2f = time.time()
print(time2f - time2s)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. AngularJs ऐप्स लिखते समय जेड या हैंडलबार्स का क्या उपयोग है

  2. मोंगोडब में इंडेक्स नहीं बना सकता, कुंजी इंडेक्स के लिए बहुत बड़ी है

  3. Php7 को mongoDB के साथ कैसे कनेक्ट करें

  4. दस्तावेज़ फ़ील्ड MongoDB में समानता कैसे प्राप्त करें?

  5. नेवला ढूँढता हैवनऔर अद्यतन एकाधिक फ़ील्ड अपडेट कर रहा है