Python多进程记录

2024-09-30 16:39:49 发布

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

我正在运行一个pythong程序,使用多处理模块来利用cpu上的多个内核。在

程序本身运行得很好,但是当它显示一种进度百分比时,一切都会一团糟。在

为了模拟发生在我身上的情况,我编写了一个小场景,在这个场景中,我使用了一些随机时间来尝试复制一些任务,这些任务可能会在原始程序中花费不同的时间。在

当您运行它时,您将看到百分比是如何混合的。在

有没有合适的方法来实现这一点?在

from multiprocessing import Pool, Manager
import random
import time


def PrintPercent(percent):
    time.sleep(random.random())
    print(' (%s %%) Ready' %(percent))

def HeavyProcess(cont):
    total = 20
    cont[0] = cont[0] + 1
    percent = round((float(cont[0])/float(total))*100, 1)
    PrintPercent(percent)

def Main():

    cont = Manager().list(range(1))

    cont[0] = 0 
    pool = Pool(processes=2)

    for i in range(20):
        pool.apply_async(HeavyProcess, [cont])

    pool.close()
    pool.join()

Main()

Tags: import程序timedef时间场景managerrandom