为什么在i = 0时我的while True循环stcuk?

时间:2018-09-01 12:53:38

标签: python python-3.x

在我的脚本中,我有一个while True循环,该循环不断检查mysql数据库。我的问题是,虽然True循环似乎只运行一次!我添加了变量i,但它也停留在0。有人可以帮我吗?

import mysql.connector
import serial
import threading
import time

mydb = mysql.connector.connect(
    host="",
    user="",
    passwd="",
    database=""
)

cursor = mydb.cursor(buffered=True)

getData = "SELECT * FROM log"

ser = serial.Serial(
    port="/dev/tty.usbmodem14111"
)


def serial_read():
    while True:
        line = ser.readline().decode('utf-8')
        return line


def serial_write(mode):
    while serial_read().startswith("OK") == False:
        print(f"Set: {handle_data().mode}")
        ser.write(f"Set: {handle_data().mode}".encode('utf-8'))

    return True


def handle_data():
    modeOld = None
    i = 0

    while True:
        i += 1
        cursor.execute(getData)
        mydb.commit()
        values = cursor.fetchall()

        mode = values[-1][1]

        print(serial_read())

        if mode != modeOld:
            print("{}: {}".format(i, mode))
            serial_write(mode)
            modeOld = mode

            if serial_write(mode) == True:
                print("Mode Set successfully!")


serial_read_thread = threading.Thread(target=serial_read())
handle_data_thread = threading.Thread(target=handle_data())

serial_read_thread.start()
handle_data_thread.start()

编辑1:我删除了try除外区块

编辑2:现在我知道它在if mode != modeOld块中。我只是在那里找不到错误。

编辑3:我现在使用线程。似乎仍然只迭代一次

1 个答案:

答案 0 :(得分:1)

在线程调用中,您正在调用目标,从target =分配的末尾删除括号,它将按预期工作。

此外,由于句柄数据线程已调用串行读取来获取数据,因此您不需要在线程中调用串行读取函数,这浪费了周期。