Python多处理重复项

2024-06-02 04:46:27 发布

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

当我在Linux上运行这个脚本时,它会打印8个副本。如何强制python在不同的结果上使用所有核心,而不是重复的结果?在

from multiprocessing import Pool

def f():
    f = open("/path/to/10.txt", 'r')
    l = [s.strip('\n') for s in f]
    f.close()

    for a in range(0, len(l)):
        for b in range(0, len(l)):
            result = 0
            if (a == b):
                result = 1
            else:
                counter = 0
                for i in range(len(l[a])):
                    if (int(l[a][i]) == int(l[b][i]) == 1):
                        counter += 1
                    result = counter / 10000   
                    print((a + 1), (b + 1), result)

if __name__ == '__main__':
    p = Process(target=f)
    p.start()
    p.join()

Tags: infromimport脚本核心forlenif
1条回答
网友
1楼 · 发布于 2024-06-02 04:46:27

如果你只想运行多个核心,你必须使用多个进程,这里你只需要使用一个。在

此外,您还需要在独立的单元/例程中中断例程f,这样它可以并行工作,并且整个任务可以在多个工作进程之间共享。在

下面是一个2进程代码示例,它可以在您的计算机上使用多个内核:

from multiprocessing import Process

def task(arg):
    pass

if __name__ == '__main__'
    value = 'something'
    prc1 = Process(target=task, args=(value,))
    prc2 = Process(target=task, args=(value,))
    prc1.start()
    prc2.start()
    prc1.join()
    prc2.join()

相关问题 更多 >