两个线程之间的多线程并发

时间:2021-02-07 23:54:38

标签: python multithreading concurrency block

我正在尝试制作两个线程。一个用于将序数(1、2、3、4、5、6、7、8、9、10)(一一)写入外部变量(config1.variable1)和其他线程读取这些值(一一)来自变量 config.variable1

我有两个文件,一个用于代码,另一个名为 config 用于 config1.variable。我使用 acquire()release() 管理并发问题,但我希望读取器线程在屏幕上写入:1,2,3,4,5,6,7,8,9,10 并且没有其他数字顺序,例如 1,3,2,4,6,5,7,8,9,10,但它不起作用。

代码是这样的:

import threading
import config1
import time


def function1():

    contador = 0
    hilo_actual = threading.current_thread().getName()
    while contador < 20:
        print('waiting for block', hilo_actual)
        block.acquire()
        try:
            contador = contador + 1
            config1.variable1= config1.variable1 + 1

            print('bloqued by', hilo_actual, contador)
            print('config1.variable1', config1.variable1)
            time.sleep(5)

        finally:
            print('releasing block by', hilo_actual)
            block.release()

def function2():

    contador = 0
    hilo_actual = threading.current_thread().getName()
    while contador < 20:
        print('waiting for block', hilo_actual)
        block.acquire()
        try:
            contador = contador + 1
            time.sleep(1)
            print('config1.variable1 in thread 2', config1.variable1)

        finally:
            print('release blocking by', hilo_actual)
            block.release()

block = threading.Lock()
thread1 = threading.Thread(name='h1', target=function1)
thread2 = threading.Thread(name='h2', target=function2)
thread1.start()
thread2.start()

0 个答案:

没有答案