Pygame построен таким образом, чтобы иметь одно окно за процессом, вы не можете избежать этого. Модуль pygame.display устанавливает вам «дисплей», и это то, что вы получаете.
Вы хорошо выглядите, так как вы разработали свое программное обеспечение для работы с потоками, и каждый поток управляет отображением. Просто измените «многопоточный» Python-модуль для многопроцессорной обработки и используйте multiprocessing.Process вместо многопоточности. Потоки - если вы инициализируете pygame и его отображение в каждом подпроцессе, все будет в порядке.
Я только что попробовал здесь и пример ниже работает отлично:
# -*- coding: utf-8 -*-
import pygame
import multiprocessing
from time import sleep
def init():
pygame.init()
screen = pygame.display.set_mode((320,240))
return screen
def main():
screen = init()
while True:
pygame.event.pump()
event = pygame.event.poll()
if event.type != pygame.NOEVENT:
print event
class Multigame(multiprocessing.Process):
def run(self):
return main()
for i in range(3):
Multigame().start()
while True:
sleep(1)