1

我在尝试学习 python 中的线程时编写了以下代码。

    import threading
    import time

    def printWorker(x,y):
        t = time.time()
        while time.time() - t < 10:
            print "Name:%s  Time:%s" %(y,str(time.time() - t))
            time.sleep(x)

    t1 = threading.Thread(target = printWorker(2,'Thread-1'))
    t2 = threading.Thread(target = printWorker(3,'Thread-2'))

    t1.start()
    t2.start()

我试图获得 Thread-1 和 Thread-2 同时启动的输出。IE打印

线程 1 的东西,线程 2 的东西,线程 1 的东西,线程 2 的东西,而不是

线程 1 的东西,线程 1 的东西,线程 1 的东西,线程 1 的东西,线程 2 的东西,线程 2 的东西,线程 2 的东西,线程 2 的东西

相反,Thread-2 仅在 Thread-1 之后开始。我已经检查了在线示例,但我不明白我在机械上做错了什么。

4

1 回答 1

4

要传递参数,您需要这样做:

t1 = threading.Thread(target=printWorker, args=(2, 'Thread-1'))
t2 = threading.Thread(target=printWorker, args=(3, 'Thread-2'))

您的代码在主线程上调用 printWorker 并使用 target=None(printWorker 的返回值)启动两个线程。

于 2011-11-27T18:03:14.170 回答