You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何给subprocess启动的Python实例传参,复用单文件实现多端口实例

解决方案

你只需要让单个server_client_pair.py支持接收命令行参数来指定端口,然后在主程序里通过循环传递递增的端口号即可,不需要维护多个重复文件。

步骤1:修改server_client_pair.py,支持命令行传参

在这个文件里,通过sys.argv获取外部传入的端口参数,替换原来硬编码的PORT变量:

import sys
import socket

# 从命令行参数获取端口,没有传参时用默认值
if len(sys.argv) >= 2:
    PORT = int(sys.argv[1])
else:
    PORT = 8000  # 自定义默认端口

# 替换成你实际的服务端+客户端socket逻辑
def run_server():
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(('localhost', PORT))
    server_socket.listen(1)
    print(f"服务端监听端口 {PORT}")
    # 你的服务端处理代码...

def run_client():
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect(('localhost', PORT))
    print(f"客户端连接端口 {PORT}")
    # 你的客户端处理代码...

if __name__ == '__main__':
    # 用线程同时启动服务端和客户端(根据你的实际需求调整)
    import threading
    threading.Thread(target=run_server).start()
    threading.Thread(target=run_client).start()

步骤2:修改主程序,循环启动多个实例

把原来的多个taskN函数改成循环逻辑,每次传递递增的端口号给子进程:

from time import sleep
from multiprocessing import Process
import subprocess

def start_port_pair(port):
    print(f"启动端口组:{port}")
    # 将端口作为命令行参数传给server_client_pair.py
    subprocess.Popen(['python', 'server_client_pair.py', str(port)])
    sleep(1)

if __name__ == '__main__':
    # 自定义配置:起始端口、要启动的实例数量
    start_port = 8000
    total_instances = 10

    processes = []
    for i in range(total_instances):
        current_port = start_port + i
        # 创建并启动进程
        proc = Process(target=start_port_pair, args=(current_port,))
        processes.append(proc)
        proc.start()
        sleep(0.5)  # 可选:错开启动时间,避免端口冲突或资源竞争

    print("等待所有进程结束...")
    # 等待所有子进程完成
    for proc in processes:
        proc.join()

关键说明

  • 主程序通过args=(current_port,)把端口号传递给start_port_pair函数,再通过subprocess.Popen的参数列表将端口作为命令行参数传给server_client_pair.py
  • server_client_pair.py里用sys.argv[1]接收端口参数,注意要转为整数类型
  • 若担心端口冲突,可以在启动前检查端口可用性,或者延长启动间隔时间

内容的提问来源于stack exchange,提问作者ozunm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:54:14