我需要一个可以处理至少数万个并发套接字连接的Python TCP服务器.我试图在多处理器和多线程模式下测试Python SocketServer包功能,但两者都远远没有达到预期的性能.
首先,我将描述客户端,因为这两种情况都很常见.
client.py
import socket
import sys
import threading
import time
SOCKET_AMOUNT = 10000
HOST, PORT = "localhost", 9999
data = " ".join(sys.argv[1:])
def client(ip, port, message):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, port))
while 1:
sock.sendall(message)
time.sleep(1)
sock.close()
for i in range(SOCKET_AMOUNT):
msg = "test message"
client_thread = threading.Thread(target=client, args=(HOST, PORT, msg))
client_thread.start()
Run Code Online (Sandbox Code Playgroud)
多处理器服务器:
foked_server.py
import os
import SocketServer
class ForkedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
cur_process = os.getpid()
print "launching a new socket handler, pid = {}".format(cur_process)
while 1:
self.request.recv(4096) …Run Code Online (Sandbox Code Playgroud) 好吧,我的工作项目中出现了一个奇怪的问题.它是用Delphi编写的.当我尝试编译它时,需要花费8个小时来编译大约770 000行(并且它不是结束),而我的同事只需要15-20秒.我已经尝试过为什么Delphi的编译速度会随着打开时间的延长而降低,我该怎么办呢?
编辑:我为缺乏信息而道歉.这是其他信息:
编辑2:我找到了解决方案!问题是我在Windows 64位系统上安装了Delphi.在虚拟Windows 7 x86上安装它使它工作:在几秒钟内编译.不知道,为什么性能上存在如此大的差距.