控制python代码在differ上运行

2024-03-29 12:14:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我的机器上有4个内核的ubuntu操作系统。另外,我有一个名为python.py它具有不同的功能,如def1、def2和def3。 我想在核心1上运行def1,其余的在核心2到4上运行。 我知道我可以使用:

       #taskset -c 1 python.py 

这个问题使得整个脚本在一个内核上运行,每个内核中的每个函数都是如此。但是,我希望在特定的核心上运行特定的函数,例如:

^{pr2}$

我的问题是:这可能吗?在


Tags: 函数py功能脚本机器核心ubuntu内核
1条回答
网友
1楼 · 发布于 2024-03-29 12:14:27

是的,您可以在不同的进程中运行每个函数,以便利用多个核心。下面是一个例子:

from multiprocessing import Process

def add(a,b):
    return a+b

def sub(s, t):
    return s-t

def mult(y,x):
    return y*x

if __name__ == "__main__":
    # construct a different process for each function
    processes = [Process(target=add, args=(3,4)),
                 Process(target=sub, args=(3,4)),
                 Process(target=mult, args=(2,3))]

    # kick them off 
    for process in processes:
        process.start()

    # now wait for them to finish
    for process in processes:
        process.join()

不需要强制操作系统在特定的内核上运行特定的进程。如果CPU上有多个内核,操作系统将在这些核心上调度进程。在这里不太可能需要使用任何类型的CPU pinning。在

上面的例子太简单了,看不到你的多个核心参与。相反,你可以尝试这个例子,这是一个简单的CPU限制问题的变化,也就是说,它只是一个需要更多计算的版本。在

^{pr2}$

如果您查看您的top输出(按1查看核心),您应该会看到这样的情况:三个核心以100%的速度使用(或接近它)。这不需要做任何CPU固定。更容易信任操作系统来实现并行性。在

enter image description here

相关问题 更多 >