我有一个主线程,它创建了n个新线程来执行一些子任务,但我只希望主代码在n个线程被锁定时执行,并且当主线程处于睡眠状态时,n个线程运行。
def main_thread(n):
sem = threading.Semaphore(n)
for i in n:
thread = threading.Thread(target=threading_fun, args=(sem,))
thread.start()
while True:
time.sleep(60)
for i in n:
sem.acquire()
# do something
sem.release(n)
def thread_fun(sem):
while True:
sem.acquire()
# do something
sem.release()
现在,我在Python中使用信号量实现了这一目标,但我想知道是否有更好的方法。主要是,我很好奇是否有办法在主线程中获取信号量n次。