Python 可以重新启动线程吗?

Python 可以重新启动线程吗?,python,multithreading,Python,Multithreading,我有以下代码: def runner1(): os.system('python something.py') ..... and so on thread_run_1 = threading.Thread(target=runner1, args=[]) .... i =0 j = 0 while i < 2: # i want to run continuously, dont want to use cron jobs print "while 1" #i

我有以下代码:

def runner1():
    os.system('python something.py')
..... and so on
thread_run_1 = threading.Thread(target=runner1, args=[])
....
i =0 
j = 0
while i < 2: # i want to run continuously, dont want to use cron jobs 
    print "while 1"
    #i made it simpler, but here are a lot of checks
    while j == 0:
        print "while 2"
        thread_run_1.start()
        ......
        time.sleep(3600)
        break
    print "back to while 1"
    i+=1
    print i
def runner1():
system('python something.py')
..... 等等
thread\u run\u 1=threading.thread(target=runner1,args=[])
....
i=0
j=0
当我<2:#我想连续运行,不想使用cron作业
打印“while1”
#我简化了,但这里有很多支票
当j==0时:
打印“while2”
线程运行1.start()
......
时间。睡眠(3600)
打破
打印“返回while 1”
i+=1
打印i

可以避免此错误:
运行时错误:线程只能启动一次

您可以通过在实例化线程对象之前通过
isAlive
进行检查来防止这种情况。拼写将因版本而异

为什么要尝试重新启动线程?由于构造函数将获得worker参数,那么这似乎是唯一在该线程上运行的东西。如果您想触发目标处理另一条信息或只是再次运行作业,您可以:

a) 构建另一个线程并运行它(我不知道这在内存方面有多昂贵)

b) 使您的目标获取对队列对象的引用,并将用于处理的信息从主线程传递到队列对象中


如果您试图找到类似java可运行程序或可调用程序的东西,我不认为python提供了这样的构造

为什么不创建一个新线程?@bereal True。但我想知道是否可以直接从代码中获取。你说的“直接从代码中获取”是什么意思?您可以直接从代码创建一个新线程。Python线程是操作系统线程的薄包装,因此当线程停止时,它就不再存在。失去生命,它安息在和平之中。这是一个前线程。开始一个新的。