【发布时间】:2021-12-19 18:07:50
【问题描述】:
以下是我的主要项目中的简化程序。我使用Semaphore 只允许两个进程一次执行test 函数。如果我不是疯了,程序应该只有 10 秒的运行时间,但我有 20 秒。如何修复它以将我的程序运行时间减少到 10 秒?
注意:在 Windows 10 上使用 Sublime 测试。
import time
from multiprocessing import Semaphore, Lock, Process
def test(sem):
sem.acquire()
time.sleep(5)
sem.release()
if __name__ == '__main__':
sem = Semaphore(2)
processes = []
for _ in range(4):
processes.append(Process(target=test, args=(sem,)))
start = time.perf_counter()
for process in processes:
process.start()
process.join()
end = time.perf_counter() - start
print(f'program finished in {end} secs')
输出
program finished in 20.836512662 secs
[Finished in 21.1s]
【问题讨论】:
-
process.join() 正在等待当前进程结束...在启动第二个等之后...然后等待 5,5,5,5
标签: python python-3.x multiprocessing semaphore