处理多个套接字连接的最佳方法是什么

2024-05-20 10:26:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要做的是根据行数从一个文件中读取x账户数量,并生成x我可以随意操作的单个套接字数量(向IRC和其他任何东西发送消息)

我现在是怎么做的:

lines=tuple(open('accts.txt', 'r'))
for line in lines:
    data=line.split(' ',1)
    a=threading.Thread(target=Spawn,args=(data[0].replace('\n',''),data[1].replace('\n','')))
    a.start()

#s.send wont work here because it doesn't exist in this context

我尝试过使用线程,但据我所知,线程似乎不允许您从线程本身之外访问它们

必须在线程中支持while True:,但如果它不可能,我可以不使用它

以下是线程创建的Spawn函数:

^{pr2}$

Tags: 文件in消息data数量ircline账户
1条回答
网友
1楼 · 发布于 2024-05-20 10:26:10

如果要创建多个连接,可以这样做:

from socket import *
SERVER       = ('irc.boats.gov',6667)  # Server address


# Open up connections
connections = []
with open('accts.txt', 'r') as f:
    for line in f:
        s = socket(AF_INET,SOCK_STREAM)
        s.connect(SERVER)
        connections.append(s)
        s.send('PASS '+password+'\r\n')
        s.send('NICK '+nick+'\r\n')
        s.send('JOIN '+channel+'\r\n')

然后,您可以使用^{}模块对它们执行任何操作。线程在这里帮不了什么忙,甚至会降低性能。您也可以按照建议尝试Twisted或使用多个进程。在

来自davidbeazley的Here is a nice related read关于并发性,我根据它改编了代码。在

相关问题 更多 >