MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mengapa PyGame membeku saat digunakan dalam kombinasi dengan PyMongo?

Pengecualian khusus yang Anda temui tampaknya berkaitan dengan koneksi mongo Anda. Apakah Anda dapat terhubung ke database Anda di Kompas MongDB?

Bagaimanapun, arsitektur Anda saat ini akan membuat game loop Anda bergantung pada penulisan database, yang dapat memakan waktu yang signifikan.

Saya telah membuat contoh yang menggunakan utas terpisah untuk mengelola koneksi MongoDB dan berkomunikasi dengan utas utama menggunakan antrian. Contoh ini juga menyertakan kecepatan bingkai di bilah judul, dan membatasi putaran game hingga enam puluh FPS. Jika Anda menambahkannya ke skrip yang ada, Anda akan melihat penurunan kecepatan bingkai setiap kali penyisipan basis data terjadi.

import time
import threading
import queue
import pygame
import pymongo

# Thread for Database storage
class MongoThread(threading.Thread):
    def __init__(self, queue):
        threading.Thread.__init__(self)
        self.queue = queue
        self.daemon = True

    def run(self):
        t_running = True
        client = pymongo.MongoClient("mongodb+srv://<insert-your-connection-string-here>")
        db = client.test
        c = db.scores
        while t_running:
            if self.queue.empty():
                time.sleep(0.1)
                pass
            else:
                data = self.queue.get()
                if data == "exit":
                    t_running = False
                else:
                    # do something with the queud data
                    c.insert_one(data)
                    print(c.count_documents({}))  # for debugging


WIDTH, HEIGHT = 1000, 400
FPS = 60

# create a queue to send commands from the main thread
q = queue.Queue()
# create and then start the thread
mongo_thread = MongoThread(q) 
mongo_thread.start()

pygame.init()
win = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
run = True
score = 0
while run:
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            run = False
            q.put("exit")
        if e.type == pygame.KEYDOWN:
            # c.insert_one({"Score": score})
            q.put({"Score": score})

    score += 1
    win.fill((0, 0, 0))
    pygame.display.update()
    pygame.display.set_caption(f"FPS: {clock.get_fps():.1f}")
    clock.tick(FPS)
pygame.quit()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menambah bidang di mongodb?

  2. Setel TTL tidak berfungsi di Mongodb c #

  3. Berapa ukuran maksimal koleksi di mongodb

  4. deret waktu dan kerangka agregasi (mongo)

  5. Menggunakan parameter maxTimeMS dengan kueri agregasi pada Mongo 2.6 dan Pymongo 2.7.1