关于python的几个问题

1、为什么Django的后端程序不能开多进程?

2、Pthon Socket的服务端程序开多进程,开多线程

服务端

import time
import socket
from multiprocessing import Process, Queue
import threading


def run(queue,flag):
    idx = 1
    while True:
        idx = idx + 1

        if queue.full():
            queue.get(idx)
        queue.put(idx)
        print(f"this is run: {idx}")
        time.sleep(1)

        f = flag.get()
        if f == 1:
            flag.put(1)
        else:
            break
            
ip_port = ('127.0.0.1', 8080)
sk = socket.socket()            # 创建套接字
sk.bind(ip_port)                # 绑定服务地址
sk.listen(5)                    # 监听连接请求
print('启动socket服务,等待客户端连接...')
conn, address = sk.accept()     # 等待连接,此处自动阻塞

print('客户端连接成功')
queue = Queue(2)
flag = Queue(2)
flag.put(1)

prun = Process(target = run,args = (queue, flag))
prun.start()

# thread_server=threading.Thread(target=run,args=(queue,flag,))
# thread_server.start()

while True:     # 一个死循环,直到客户端发送‘exit’的信号,才关闭连接
    client_data = conn.recv(1024).decode()      # 接收信息
    if client_data == "exit":       # 判断是否退出连接
        flag.put(0)
        sk.close()  # 关闭连接
        exit("通信结束")
        
    print("来自%s的客户端向你发来信息:%s" % (address, client_data))
    print(f"{queue.qsize()}, {flag.qsize()}")
    a = queue.get()
    conn.sendall(f'{a}'.encode())    # 回馈信息给客户端

客户端

import socket

ip_port = ('127.0.0.1', 8080)
s = socket.socket()     # 创建套接字
s.connect(ip_port)      # 连接服务器

while True:     # 通过一个死循环不断接收用户输入,并发送给服务器
    inp = input("请输入要发送的信息: ").strip()
    if not inp:     # 防止输入空信息,导致异常退出
        continue
    s.sendall(inp.encode())
    
    if inp == "exit":   # 如果输入的是‘exit’,表示断开连接
        print("结束通信!")
        break

    server_reply = s.recv(1024).decode()
    print(server_reply)
s.close()       # 关闭连接

你可能感兴趣的:(python,python,django,socket)