1循环后Python线程卡住了

时间:2017-12-05 13:42:28

标签: python multithreading python-3.x function

使用python 3处理某些线程,同时运行两个东西。 这是我正在测试的脚本。

from threading import Thread
import time as t
x=1
z=1
var=0
def firstFunction():
    global var
    while x == 1:

        var += 1
        t.sleep(1)
def secondFunction():

    while z == 1:
            print(var)
    t.sleep(1)
add=Thread(target=firstFunction)
see=Thread(target=secondFunction)
add.start()
see.start()

由于某种原因,当我运行它时,你会把它计算出去,对吧? 但它只是说

  

1

并没有结束或说错误,但如果我尝试一个脚本,有脚本询问你是否想看到var它工作正常。任何方式我可以让这个没有问的工作吗?以下是询问的代码。

from threading import Thread
import time as t
x=1
z=1
var=0
def firstFunction():
    global var
    while x == 1:
        var += 1
        t.sleep(1)
def secondFunction():

    while z == 1:
            see1=input("See var? : ")
            if see1 == "y":
                print(var)
            elif seel == "n":
                print("ok")
            else:
                print("not option")
add=Thread(target=firstFunction)
see=Thread(target=secondFunction)
add.start()
see.start()

1 个答案:

答案 0 :(得分:1)

当您运行这样的代码时,主线程将到达结尾并在启动两个子线程后直接终止。

你必须等到线程完成。 .join()会这样做,因此您只需将这些行添加到您的程序的最后部分

add.join()
see.join()

并且主线程将等待两个线程完成。

请注意,不幸的线程和联接星座可能导致死锁。