Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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 多线程:将线程定义为类_Python_Multithreading_Python Multithreading - Fatal编程技术网

Python 多线程:将线程定义为类

Python 多线程:将线程定义为类,python,multithreading,python-multithreading,Python,Multithreading,Python Multithreading,我编写了以下程序,将线程作为一个类实现 import threading import datetime import time class MyThread(threading.Thread): def __init__(self,i): threading.Thread.__init__(self) self.i=i def prints(self): while(self.i>0): prin

我编写了以下程序,将线程作为一个类实现

import threading
import datetime
import time

class MyThread(threading.Thread):
    def __init__(self,i):
        threading.Thread.__init__(self)
        self.i=i

    def prints(self):
        while(self.i>0):
            print "i="+str(self.i)+" "+str(datetime.datetime.now().time())+"\n"
            self.i=self.i-1
            time.sleep(1)
        return

t1=MyThread(3)
t2=MyThread(5)
time.sleep(1)
t1.start()
t2.start()
#t1.join()
#t2.join()

即使它执行时没有抛出任何错误,我也看不到我期望的输出,即,在一个线程中打印I=3到1,在另一个线程中打印I=5到1。事实上,根本没有产出。代码在我看来很好。我甚至尝试添加睡眠语句,但都没有用。什么地方可能出了问题?

没有地方可以调用
prints()
;你只是给它下定义。如果改为调用它
run
,线程类将调用它。您也可以保留名称,但可以定义一个单独的
run
方法来调用它。

您无处调用
prints()
;你只是给它下定义。如果改为调用它
run
,线程类将调用它。您也可以保留名称,但定义一个单独的调用该名称的
run
方法。

如果您从未调用
prints
函数,则应在
run
函数中调用
prints
,该函数重写
线程
类:

class MyThread(threading.Thread):
    def __init__(self,i):
        threading.Thread.__init__(self)
        self.i=i
   def run(self):
        self.prints()
您还应该导入
datetime
,这是输出:

i=3 16:55:36.903809
i=5 16:55:36.904809


i=2 16:55:37.966870
i=4 16:55:37.967870


i=1 16:55:38.972927
i=3 16:55:38.973927


i=2 16:55:39.979985

i=1 16:55:40.984042

您从不调用
prints
函数,您应该在
run
函数中调用
prints
,该函数覆盖
Thread
类:

class MyThread(threading.Thread):
    def __init__(self,i):
        threading.Thread.__init__(self)
        self.i=i
   def run(self):
        self.prints()
您还应该导入
datetime
,这是输出:

i=3 16:55:36.903809
i=5 16:55:36.904809


i=2 16:55:37.966870
i=4 16:55:37.967870


i=1 16:55:38.972927
i=3 16:55:38.973927


i=2 16:55:39.979985

i=1 16:55:40.984042

请原谅我的无知。因此,run()是线程类隐式调用的函数,任何其他函数都需要显式调用?请原谅我的无知。因此,run()是线程类隐式调用的函数,任何其他函数都需要显式调用?这很有帮助。我错过了datetime导入语句。已编辑该帖子以将其包含在内。感谢你指出这一点,这很有帮助。我错过了datetime导入语句。已编辑该帖子以将其包含在内。感谢你指出这一点。