qq_43412960 2019-11-24 20:36 采纳率: 78.6%
浏览 222
已结题

这是一个关于PYTHON多线程多进程的问题

这是我写的服务器代码

import   socket,os
from  multiprocessing  import   Process

def  haha(yong):
     while True:
          data=yong.recv(100)
          if data.decode()!='q':
            yong.send(data)
          else:
             yong.send('q'.encode())
             yong.close()
             break
if __name__ == '__main__':
     service = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     service.bind(('127.0.0.1', 6))
     service.listen(4)
     print(os.getpid())
     while True:
          yong,add=service.accept()
          jaiyou=Process(target=haha,args=(yong,))
          jaiyou.start()


     service.close()

这是我写的客户机代码

import  socket,os
quest1=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
quest1.connect(('127.0.0.1',6))
while True:
    quest1.send(input().encode())
    data=quest1.recv(100).decode()
    if  data=='q':
       break;
    else:

       print(os.getpid())

       continue

quest1.close()

当多个客户机 连接一个服务器的时候,每个进程ID号都是不同的,这我可以理解,多进程嘛
但是,当我把服务器代码中的进程process换成thread线程的时候。多个客户机的进程Id还不同,这就奇怪了,线程不应该都在一个进程Id里吗

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-11-24 23:54
    关注

    每个客户机都是一个独立的进程。当然id不同。你说的process换成thread线程,是服务器,和客户端没有关系。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器