我试图在python脚本中启动不同的线程。
class MyThread (threading.Thread):
def __init__(self, sf):
threading.Thread.__init__(self)
self.sf = sf
def run (self):
# opening files
我将不同的线程附加到线程列表
while True:
path_to_file = L.pop()
tr = MyThread(path_to_file)
tr.start()
threadlist.append(tr)
for elem in threadlist:
print(elem._name)
print(elem.isAlive())
answer = input("Another thread to start? ")
if answer is not 'y':
break
打印出每个线程的活动状态,表明先前启动的线程已停止:
Thread-1
True
Another thread to start? y
Thread-1
False
Thread-2
True
Another thread to start? y
Thread-1
False
Thread-2
False
Thread-3
True
我在这里做错了什么?
答案 0 :(得分:1)
我无法分辨为什么你的线程被停止了,因为你没有显示run
方法中的内容。
正如其他人所提到的,目前尚不清楚为什么要扩展Thread
类。
但是,这里有一个工作示例,说明如何使上面的类展示多个生命线程。请记住,由于Global Interpreter Lock,Python中的线程不会为您带来CPU并行性。但是,如下面的评论中所述,如果您的应用程序受IO限制,它可以为您提供性能。
from threading import Thread
import time
class MyThread (Thread):
def __init__(self):
Thread.__init__(self)
def run (self):
time.sleep(1)
# opening files
threadlist = []
for i in range(3):
tr = MyThread()
tr.start()
threadlist.append(tr)
for elem in threadlist:
print(elem.isAlive())