Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 皮布雷拉&x2B;RPI线程停止_Python_Multithreading_Loops_Raspberry Pi_Email Threading - Fatal编程技术网

Python 皮布雷拉&x2B;RPI线程停止

Python 皮布雷拉&x2B;RPI线程停止,python,multithreading,loops,raspberry-pi,email-threading,Python,Multithreading,Loops,Raspberry Pi,Email Threading,我正在写一个脚本,按下Pibrella上的按钮后,每10秒发送一封电子邮件。我希望它在再次按下按钮时停止 例如,第一次按下它时,它每10秒发送一封电子邮件。然后第二次,它停止线程 这是我目前的密码,有人能告诉我哪里做错了吗 import pibrella, signal import threading import time import smtplib server = smtplib.SMTP("smtp.gmail.com",587) server.ehlo() server.star

我正在写一个脚本,按下Pibrella上的按钮后,每10秒发送一封电子邮件。我希望它在再次按下按钮时停止

例如,第一次按下它时,它每10秒发送一封电子邮件。然后第二次,它停止线程

这是我目前的密码,有人能告诉我哪里做错了吗

import pibrella, signal
import threading
import time
import smtplib

server = smtplib.SMTP("smtp.gmail.com",587)
server.ehlo()
server.starttls()
server.ehlo()

server.login("email@gmail.com", "EmailPassword")

isPressed = 0

def pressed(pin):
    global isPressed
    if isPressed == 0:
        isPressed = 1
        sendMail()
    else:
        pibrella.light.off()
        t.cancel()
        isPressed = 0

def sendMail():
    pibrella.light.pulse()
    server.sendmail("email@gmail.com", "receiver@gmail.com", "Hello World")
    t.start()

t = threading.Timer(10, sendMail).start()

pibrella.button.pressed(pressed)
pibrella.pause()

server.close()
我现在得到的错误发布在下面。请注意,电子邮件确实已发送

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pibrella.py", line 262, in handle_callback
    callback(self)
  File "sendText.py", line 27, in pressed
    sendMail()
  File "sendText.py", line 36, in sendMail
    t.start()
AttributeError: 'NoneType' object has no attribute 'start'
Exception in thread Thread-14:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 760, in run
    self.function(*self.args, **self.kwargs)
  File "sendText.py", line 36, in sendMail
    t.start()
AttributeError: 'NoneType' object has no attribute 'start'
发送电子邮件的代码(从我的Github)


你能告诉我们你当前的代码是做什么的吗?为什么你认为它失败了?用错误消息更新了它。
import subprocess
import smtplib
import socket
from email.mime.text import MIMEText
import datetime
#account info
to = 'example@gmail.com'
gmail_user = 'example@gmail.com'
gmail_password = 'your_password'
smtpserver = smtplib.SMTP('smtp.gmail.com', 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.login(gmail_user, gmail_password)
today = datetime.date.today()
arg='ip route list'
p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE)
data=p.communicate()
split_data=data[0].split()
ipaddr=split_data[split_data.index('src')+1]
my_ip='your_message'
msg=MIMEText(my_ip)
msg['Subject']= 'the_subject'
msg['From']= gmail_user
msg['To'] = to
smtpserver.sendmail(gmail_user, [to], msg.as_string())
smtpserver.quit()