线程创建和实现互斥通过使用切换

Thread creation and implementation of mutual exclusion by use switching

提问人:fm_0091 提问时间:4/18/2023 更新时间:4/18/2023 访问量:21

问:

如果可能的话,我希望得到一点帮助。

我需要找到执行任务的时间(以秒为单位)。

我仍在学习用 Python 编程,我下面的代码无法正常工作。我可以修改或更正哪些内容?

import threading 
import time

x = 0
turn = 0


def entra_cs(num_tasks):
    global turn
    while turn != num_tasks:
        pass


def sai_cs(num_tasks):
    global turn
    turn = (turn + 1) % num_tasks


def incrementa():
    global x
    x = x + 1


def thread_task(num_tasks):
    for _ in range(10):
        entra_cs(num_tasks)
        incrementa()
        sai_cs(num_tasks)


def main_task():
    global x
    x = 0

    t1 = threading.Thread(target=thread_task, args=(1,))
    t2 = threading.Thread(target=thread_task, args=(2,))

    t1.start()
    t2.start()

    t1.join()
    t2.join()


if __name__ == "__main__":
    comeco = time.time()
    for i in range(10):
        main_task()
        print("Iteration {0}: x = {1}".format(i, x))
    fim = time.time()
    print('Duration in seconds -', comeco - fim)
多线程 时间 任务 切换 互斥

评论

0赞 JustBeingHelpful 4/18/2023
stackoverflow.com/q/31776850/640205
0赞 JustBeingHelpful 4/18/2023
cprofiling 将为您提供有关每个函数执行所需时间的统计信息
0赞 JustBeingHelpful 4/18/2023
此外,您正在使用线程模块。这仅执行与单个内核的并发(上下文切换)。如果要加快速度,请使用多处理模块使用多个内核并行运行。
0赞 fm_0091 4/30/2023
@Entree 谢谢你的提示。我设法解决了我的问题,这是一个简单的教育练习。
0赞 JustBeingHelpful 4/30/2023
别客气。干得好!

答: 暂无答案