gpt4 book ai didi

python - 清除Python中的线程?

转载 作者:行者123 更新时间:2023-11-28 21:29:45 25 4
gpt4 key购买 nike

我正在尝试使用 python 来设置一个非常简单的 UDP 套接字服务器,它接受异步连接。现在,我以前从未使用过 Python,但从我读到的相关内容来看,我非常喜欢这门语言,这就是我在本次测试中使用它的原因。

我正在遵循此处给出的示例:

http://docs.python.org/library/socketserver.html#asynchronous-mixins

我已经成功地将它作为 UDP 服务器运行(示例是 TCP),只需进行很少的修改,因此它几乎与该示例中的完全相同。我唯一不明白的是它不断为每个连接创建新线程。

现在我可能只是错过了理解线程的概念,这就是为什么我在这里问我的问题,但它不应该清除未使用的线程并重新使用它们吗?或者它是否已经这样做了,它只是一个增量计数器,指示我不应该太关心的数字?

所以基本上,对于给定的示例,我可以在结束时安全地运行这个(作为测试)几个小时,有数千个连接(不是同时的,而是随着时间的推移)而不会出现任何问题,或者它会启动数千个线程吗?停留的时间比他们应该停留的时间长得多?

谢谢

最佳答案

不需要线程。使用真正的异步IO。它的扩展性要好得多。等待 IO 的线程只会增加开销,不会提高性能。

from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor

class Echo(DatagramProtocol):

def datagramReceived(self, data, (host, port)):
print "received %r from %s:%d" % (data, host, port)
self.transport.write(data, (host, port))

reactor.listenUDP(9999, Echo())
reactor.run()

关于python - 清除Python中的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com