#python #multithreading #concurrency #block
#python #многопоточность #параллелизм #блок
Вопрос:
Я пытаюсь создать два потока. Один для записи порядковых чисел (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()
Комментарии:
1. Где config1?
2. config1 — это файл в том же каталоге. В этом файле есть одна переменная с именем variable1.