Python:启动线程

时间:2014-04-14 05:20:46

标签: python multithreading

我试图在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

我在这里做错了什么?

1 个答案:

答案 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())