在創建到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