Следующий код работает нормально:
import threading
semaphore = threading.Semaphore(0)
def consumer():
semaphore.acquire()
print("consumer next")
def producer():
print("producer first")
semaphore.release()
if __name__ == '__main__':
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
t1.start()
t2.start()
Приведенный выше код отражает проблему производителей-потребителей потоков. Результат печати:
сначала производитель
следующий потребитель
Итак, я хочу использовать семафор процесса, но он не работает
from multiprocessing import Process, Semaphore
s = Semaphore(0)
class producer(Process):
def __init__(self):
super().__init__()
def run(self):
global s
print("producer first")
s.release()
class consumer(Process):
def __init__(self):
super().__init__()
def run(self):
global s
s.acquire()
print("consumer next")
if __name__ == '__main__':
p1 = producer()
p2 = consumer()
p1.start()
p2.start()
"потребитель следующий" не показывает, что я неправильно написал, почему?
Как решить, пожалуйста.