共享时间变量在两个线程之间

时间:2017-11-27 14:31:14

标签: python multithreading

嗨我需要创建2个线程,其中重复写入时间作为 HH:MM:SS字符串每秒100次进入全局变量。第二个线程将重复读取一天中的时间 该变量的字符串每秒两次并尝试将其显示到屏幕,但该线程中的代码应该保证相同 string永远不会连续写入两次。结果是第二个线程每秒只显示一次屏幕。我试过以下代码,但它不起作用

    import threading
    import time
    c = threading.Condition()
    flag = 0      #shared between Thread_A and Thread_B
    val = ''

class Thread_A(threading.Thread):
    def __init__(self, name):
        threading.Thread.__init__(self)
        self.name = name

    def run(self):
        global flag
        global val     #made global here
        while True:
            c.acquire()
            if flag == 0:
                time.sleep(0)
                flag = 1
                a=range(1,101)
                for i in a:
                    val=time.strftime("%H:%M:%S", time.localtime(time.time()))
                c.notify_all()
            else:
                c.wait()
            c.release()


class Thread_B(threading.Thread):
    def __init__(self, name):
        threading.Thread.__init__(self)
        self.name = name

    def run(self):
        global flag
        global val    #made global here
        while True:
            c.acquire()
            if flag == 1:
                #time.sleep(1)
                flag = 0
                a=range(0,2)
                for i in a:
                    print str(val)
                #val = 20
                c.notify_all()
            else:
                c.wait()
            c.release()


a = Thread_A("myThread_name_A")
b = Thread_B("myThread_name_B")

b.start()
a.start()

a.join()
b.join()

0 个答案:

没有答案