I've started programming in Python a few weeks ago and was trying to use Semaphores to synchronize two simple threads, for learning purposes. Here is what I've got:
import threading sem = threading.Semaphore()  def fun1():     while True:         sem.acquire()         print(1)         sem.release()  def fun2():     while True:         sem.acquire()         print(2)         sem.release()  t = threading.Thread(target = fun1) t.start() t2 = threading.Thread(target = fun2) t2.start()  But it keeps printing just 1's. How can I intercale the prints?
It is working fine, its just that its printing too fast for you to see . Try putting a time.sleep() in both functions (a small amount) to sleep the thread for that much amount of time, to actually be able to see both 1 as well as 2.
Example -
import threading import time sem = threading.Semaphore()  def fun1():     while True:         sem.acquire()         print(1)         sem.release()         time.sleep(0.25)  def fun2():     while True:         sem.acquire()         print(2)         sem.release()         time.sleep(0.25)  t = threading.Thread(target = fun1) t.start() t2 = threading.Thread(target = fun2) t2.start() 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With