У меня есть класс, который наследует многопоточность. Thread, и я включил многопоточность. Thread. init (self) в мой метод init и переопределил метод run. Однако когда я запускаю поток с помощью myObject.start (), основной l oop не зависит от этого и скорее ждет. Обратите внимание, я нигде не использую join ().
Желаемое поведение состоит в том, что после запуска потока с помощью myObject.start () поток продолжает выполняться, в то время как основная функция продолжает выполняться. В следующем примере после выполнения myObject.start () я бы хотите, чтобы "МОЙ ДРУГОЙ КОД" запускался немедленно, независимо от того, что делает мой поток.
myObject = Object (arg1, arg2)
myObject.start ()
MY ДРУГОЙ КОД
МОЙ ДРУГОЙ КОД
Спасибо
РЕДАКТИРОВАТЬ Часть класса Gmail:
def gmailAPIEmailQueue(self, labelList):
try:
searchResult = self.gmailAPIMessageLabelSearch(labelList)
if searchResult is False:
logging.error("Failed to search for emails with labelList (" +str(labelList)+ ")")
return False
for targetID in searchResult:
targetEmailID = targetID['id']
emailMessage = self.gmailAPIGetFullMessage(targetEmailID)
if emailMessage is False:
logging.error("Unable to get email associated with the emailID (" +str(targetID)+ ")")
continue
emailContent = self.gmailAPIExtractEmailContent(emailMessage)
if emailContent is False:
logging.error("Failed to get email content associated with emailID (" +str(targetID)+ ")")
continue
attachments = self.gmailAPIDownloadAttachments(targetEmailID)
if attachments is False:
logging.error("Failed to download email attachments associated with emailID (" +str(targetID)+ ")")
continue
theEmail = Email(attachments, emailMessage, emailContent)
(self.emailQueue).append(theEmail)
return True
except:
logging.error("An error was encountered in Gmail Email Queue")
tb = traceback.format_exc()
logging.exception(tb)
return False
def run(self):
while True:
self.gmailAPIEmailQueue(self.labelList)
def __init__(self, email, password, labelList=['INBOX', 'UNREAD'],port=993, server='imap.gmail.com'):
threading.Thread.__init__(self)
socket.setdefaulttimeout(60)
self.serverConnection = None
self.email = email
self.password = password
self.port = port
self.server = server
self.gmailAPIService = None
self.emailQueue = list()
self.labelList = labelList
result = self.gmailAPIInitialize()
if result is False:
logging.error("Gmail API Failed to Initialize")
sys.exit(-1)
В моей главной программе :
myGmail = Gmail(emailAddress, emailPassword, searchLabel)
myGmail.start()
theEmailQueue = myGmail.gmailAPIGetQueue()
#OTHER CODE, Such as other threads.
#
#
#emailProcessor = EmailProcessing(var1,var2)
#emailProcess.start()
Я хочу, чтобы myGmail и emailProcessor запускались одновременно, но на данный момент он ожидает myGmail.start ().