Почему многопроцессорная обработка не работает в python

#python #multiprocessing

Вопрос:

Я создаю приложение для чата, в котором использую многопроцессорную обработку. Код был слишком большим, поэтому я отправляю только основную часть кода, Спасибо за вашу помощь

Код

 import socket,select
from multiprocessing import Process
HEADER_LENGTH = 10
IP = socket.gethostbyname(socket.gethostname())
PORT = 1234
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((IP, PORT))
server_socket.listen()
sockets_list = [server_socket]
clients = {}





def Run_Server():
    def receive_message(client_socket):

        try:
            message_header = client_socket.recv(HEADER_LENGTH)

            if not len(message_header):
            return False

            message_length = int(message_header.decode('utf-8').strip())

            return {'header': message_header,'data':client_socket.recv(message_length)}

        except:



            return False
    while True:

        read_sockets, _, exception_sockets = select.select(sockets_list[],sockets_list)



        for notified_socket in read_sockets:


            if notified_socket == server_socket:


                client_socket, client_address = server_socket.accept()


                user = receive_message(client_socket)

   
                if user is False:
                    continue

 
                sockets_list.append(client_socket)

                clients[client_socket] = user

                print('Accepted new connection')

            else:

                message = receive_message(notified_socket)


                if message is False:
                    print('Closed connection ')

   
                    sockets_list.remove(notified_socket)


                    del clients[notified_socket]

                        continue

                user = clients[notified_socket]

                print(f'Received message')

  
                for client_socket in clients:


                    if client_socket != notified_socket:

                        client_socket.send(user['header'] )


        for notified_socket in exception_sockets:

            sockets_list.remove(notified_socket)

            del clients[notified_socket]

if __name__ =='__main__' :
    p1= Process(target=Run_Server)
    p1.start()
    p1.join()
 

Вывод
пустой
, но он должен загружать сервер, чтобы я мог с ним работать. Я видел много подобных вопросов, но не мог исправить ошибку, пожалуйста, скажите, что не так. Я пытался обойтись без p1.join() , но все еще не работает, пожалуйста, помогите мне.

Комментарии:

1. Каждый процесс имеет свои собственные переменные (если только вы не используете специальные типы multiprocessing , созданные для синхронизации процессов).

2. Так как же мне это исправить

3. Я бы использовал потоки вместо процессов.

4. Отправьте свой код, который не сработал!

5. Большое спасибо за вашу помощь, я использовал темы, и это сработало