我刚刚开始使用 Python 学习套接字。所以我写了一些聊天服务器和客户端的例子。我在互联网上看到的大部分内容似乎都使用线程模块来(异步)处理客户端与服务器的连接。我确实明白,对于可扩展的服务器,您需要使用一些额外的技巧,因为成千上万的线程可以杀死服务器(如果我错了,请纠正我,但这是由于 GIL 造成的吗?),但这不是我目前关心的问题。
奇怪的是,我在 Python 文档的某处发现创建子进程是正确的方法(不幸的是,我丢失了参考,抱歉 :( )用于处理套接字。
所以问题是:使用线程还是多处理?还是有更好的解决方案?
请给我答案并向我解释其中的区别。
顺便说一句:我确实知道有像 Twisted 这样的东西写得很好。我不是在寻找预制的可扩展服务器,而是试图了解如何编写一个可以扩展或处理至少 10k 客户端的服务器。
编辑:操作系统是Linux。