本文介绍了Python上的信号量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
几周前,我开始使用Python进行编程,并试图使用Semaphores来同步两个简单线程,以达到学习目的.这是我所拥有的:
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()
但是它只打印1个.如何使打印件交错显示?
But it keeps printing just 1's. How can I intercale the prints?
推荐答案
它工作正常,只是打印速度太快而无法看到.尝试在两个函数中都放一个time.sleep()
(少量)以使线程休眠那么长的时间,以便实际上可以同时看到1和2.
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.
示例-
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()
这篇关于Python上的信号量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!