だから私はスレッドを持っています:
import threading, time, serial, logging
class SerialThread(threading.Thread):
# SerialThread class construcor
def __init__(self, sleep):
self.sleep = sleep
threading.Thread.__init__(self,name = "SerialThread")
self.setDaemon(1)
# SerialThread method
def run(self):
# Do forever
while 1:
# Sleep afther every loop
time.sleep(self.sleep)
print 'Doing some work!'
def setSleep(self, sleep):
self.sleep = sleep
そして、私のメインスレッドで私は:
serialThread = SerialThread(60)
serialThread.start()
def changeSleep():
serialThread.setSleep(80)
私はメインコードからこのスレッドを開始しています。しかし、今、番号を変更したいときはself.sleep
どうすればよいですか? 私はこのシンプルで素朴なソリューションを試して、スレッドクラスでメソッドを作成し、呼び出されたときにスリープ時間を設定しました。どうやらこれは私が期待したようには機能しませんでした。良い例は大歓迎です。
編集:前に試したコードを追加
編集:self.sleep
最初に設定したように、常に60であるため、呼び出した後でも機能しませんserialThread.setSleep(80)
編集:これは関連性があるとは思いませんでしたが、フラスコでWebサービスを作成してserialThread.setSleep(80)
おり、フラスコルートにアクセスすることによって呼び出されます。したがって、フラスコは別のスレッドでも実行されると思います。そのため、serialThread.setSleep(80)
実際にはメインスレッドから呼び出されません...
コード:
@app.route('/api/setConf', methods=['POST'])
def setConf():
serialThread.setSleep(config.interval)
return 'ok'