5通のメールを並行して送信しようとしています。関数scheduleEmailsは、5つの電子メールアドレスのリストのリストを入力として受け取ります。私のコードは次のようになります。
import multiprocessing
import smtplib
def sendMail(email):
#sends email using smtplib
# returns True in case of success, False in case of failure
def scheduleEmails(emailLst):
"""
emailLst is a list of list of 5 emails
emailLst = [[emailAddr1,emailAddr2,emailAddr3...emailAddr5],
[emailAddr6...emailAddr10],
[emailAddr11... emailAddr[15],...]
"""
FREQUENCY = 5 # no. of emails to be send per second
for i in range(len(emailLst)):
p = multiprocessing.Pool(FREQUENCY)
emails = emailLst[i]
results = p.map(sendEmail,emails)
scheduleEmails(someEmailLst)
コードは正常に機能しますが、しばらくするとハングします。間違いを指摘したり、これを達成するためのより良い方法を提案したりできますか?