Python线程。为什么我一次只能运行一个线程

时间:2013-06-05 20:33:39

标签: multithreading python-2.7

我正在尝试使用线程来处理我正在进行的项目。这是我用作测试的代码

import threading


class one(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        while 1:
            print "one"


class two(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        while 1:
            print "two"

threads = []

one = one()
two = two()

one.start()
two.start()


threads.append(one)
threads.append(two)

for t in threads:
    t.join()

问题是只有一级运行。你能看到我的代码有问题吗?

2 个答案:

答案 0 :(得分:3)

您必须覆盖run方法,而不是__init__

class one(threading.Thread):
    def run(self):
        while 1:
            print "one"

此方法是在不同的线程上执行的,而one = one()在创建对象的同一线程中启动无限循环。

如果要传递要在新线程中使用的参数,请覆盖__init__,例如:

class NumberedThread(threading.Thread):
    def __init__(self, number):
        threading.Thread.__init__(self)
        self.number = number

    def run(self):
        while 1:
            print self.number

NumberedThread("one").start()
NumberedThread("two").start()

答案 1 :(得分:1)

你在你的线程构造函数中放了一个无限循环。你的第一个“线程”从来没有从它的构造函数中获取,所以试图创建它的代码只是坐着并等待创建对象。结果,你实际上并没有多线程:你在主线程中只有一个无限循环。

覆盖run而不是__init__,您应该全部设置。

class one(threading.Thread):
    def run(self):
        while 1:
            print "one"


class two(threading.Thread):
    def run(self):
        while 1:
            print "two"