在创建到NNTP服务器的连接时尝试2天才能使多重处理工作。目标:尽可能快地建立一堆连接(如50)。由于在for循环中连接速度可能会很慢(比如高达10秒),所以我希望使用多处理功能将它们全部“一次”完成。在建立连接之后,它们保持开放状态,因为在将来的多处理部分中将有10,000多个请求依赖于类似的原理。如何使用多重处理创建nntplib对象
代码的一些简单的部分:
#!/usr/bin/env python3
import sys
import ssl
from nntplib import NNTP_SSL
from multiprocessing import Pool
def MakeCon(i, host, port):
context = ssl.SSLContext(ssl.PROTOCOL_TLS)
s = NNTP_SSL(host, port=port, ssl_context=context, readermode=True)
print('created connection', i) # print to see progress
sys.stdout.flush()
return s
def Main():
host = 'reader.xsnews.nl'
port = 563
num_con = 4
y=MakeCon(1, host, port).getwelcome() #request some message from NNTP host to see if it works
print(y)
# the actual part that has the issue:
if __name__ == '__main__':
cons = range(num_con)
s = [None] * num_con
pool = Pool()
for con in cons:
s[con]=pool.apply_async(MakeCon, args=(con, host, port))
pool.close
print(s[1])
for con in cons:
t=s[con].getwelcome() #request some message from NNTP host to see if it works
print(t)
print('end')
Main()
显示的是到NNTP服务器等的连接工作,但我在部分无法提取连接到某个对象,我可以结合的nntplib使用选项。我会说我不是那种经验丰富的Python,特别是不是多处理。
您是否试图创建到同一个新闻服务器的多个连接? – JohanL
@JohanL谢谢,是的,尽可能快,所以我不太喜欢NNTP_SSL()/ NNTP(),因为每次在建立连接之前可能有1秒的等待时间。这就是为什么我想使用多处理技术“同时”创建它们。 – uytda