为什么该程序没有输出?

时间:2019-10-01 08:10:10

标签: python python-3.x multithreading python-multithreading

我正在尝试创建一个锁,以防止两个线程同时打印。但是,脚本可以运行并完成,没有错误,但是没有任何输出。如何使程序打印输出。

我尝试重命名锁并使用多线程库而不是踩踏库,但是使用多线程库时遇到了更多错误。我尝试直接在打印上设置一个锁定,但是这完全导致使用打印时出错。

import threading

lo = threading.Lock()

class Hello(threading.Thread):
    def run(self):
        for a in range(500):
            global lo
            with lo:
                print("Hello")

class Hi(threading.Thread):
    def run(self):
        for b in range(500):
            global lo
            with lo:
                print("Hi")

t1=threading.Thread(target=Hello)
t2=threading.Thread(target=Hi)

t1.run()
t2.run()

我期望字符串“ Hello”和“ Hi”将在单独的行上打印,但是输出完全丢失。

1 个答案:

答案 0 :(得分:0)

尝试一下:

import threading

lo = threading.Lock()

def Hello(self):
    for a in range(500):
        global lo
        with lo:
            print("Hello")

def Hi(self):
    for b in range(500):
        global lo
        with lo:
            print("Hi")

t1=threading.Thread(target=Hello)
t2=threading.Thread(target=Hi)

t1.start()
t2.start()

检查threading模块的文档:https://docs.python.org/3/library/threading.html