运行线程并在工作期间询问数据

时间:2019-01-20 01:01:30

标签: python multithreading

我的代码有问题。我正在使用thread运行此代码,然后我需要询问变量SPEED等,但是我不知道如何。我仍在尝试这样做,但是thread出现错误。

顺便说一句,我想创建一个脚本来生成虚假的汽车数据,我需要填充数据库,然后绘制一些图表。

import time
import thread
class Test:
    def __init__(self):
    self.speed = 0
        self.dist = 0
        self.maxSpeed = 150
        self.time = 6
        self.fuel = 100
        self.distance = 100
        self.start = time.time()
        self.elapsed = 0

    def jazda(self):
        while True:
            self.speed += 1

            if self.speed < self.maxSpeed:
                time.sleep(1)
            else:
                time.sleep(60)

            self.elapsed = time.time() - self.start
            self.dist = (self.speed * self.elapsed) / 3600

            print "Distance: ", self.dist
            print "Speed: ", self.speed
            print "Time: ", self.elapsed
            if self.elapsed > self.time:
                break
        return 0

    def SPEED(self):
        return self.speed

和第二个脚本:

import test
import thread
import time
class Data:
    def __init__(self):
        self.test = test.Test()

    def get_speed(self):
        while True:
            return self.test.SPEED()
            time.sleep(2)

thread.start_new_thread( test.Test().jazda(), () )
thread.start_new_thread( obdData().get_speed, () )

我得到的错误是:

thread.start_new_thread( Test().jazda(), () )
TypeError: first arg must be callable

1 个答案:

答案 0 :(得分:0)

我认为问题在于thread.start_new_thread方法需要方法引用,而不是方法调用,即test.Test().jazda是方法引用,即可调用;但是,test.Test().jazda()将返回该方法的结果(在这种情况下为0)不是可调用的。您的启动方法应类似于thread.start_new_thread(test.Test().jazda, ())