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