有没有一种方法可以命令完成的过程来帮助Python中未完成的过程?

时间:2020-05-18 02:34:28

标签: python multiprocessing

作业:在N中对{0, 1}个整数进行采样,为CPU N_i分配“采样i个整数”。 N = N_1 + ... + N_m。这是Python的实现,其中N = 16, m = 4; N_1, N_2, N_3, N_4 = 1, 2, 3, 10

import multiprocessing as mp
import time
from random import sample

def func(Library, Timer, nums, pid, t0):
    # proc: pid, sample size: nums[pid]
    sub_Lib = []
    while True:
        time.sleep(1)
        i = sample(range(2), 1)[0]
        Library.append(i)
        sub_Lib.append(i)
        # self job finished
        if len(sub_Lib) == nums[pid]:
            Timer[pid] = round(time.time()-t0, 2)
            break
        # ult job finished
        if len(Library) == sum(nums):
            Timer[pid] = round(time.time()-t0, 2)
            break
        pass
    pass

def run_process():
    Library = mp.Manager().list()
    Timer = mp.Manager().dict()
    nums = [1, 2, 3, 10]
    t0 = time.time()
    procs = []
    for pid, num in enumerate(nums):
        proc = mp.Process(target=func, args=(Library, Timer, nums, pid, t0))
        procs.append(proc)
        pass
    for proc in procs:
        proc.start()
        pass
    for proc in procs:
        proc.join()
        pass
    result = 'Ints: {}\nTime: {}'.format(Library, Timer)
    print(result)
    pass

def main():
    run_process()
    pass

if __name__ == '__main__':
    main()
    pass

请注意,第四步比其他第三步需要更多的时间。有没有办法命令完成的过程来帮助未完成的过程?感谢您的任何帮助,谢谢。

0 个答案:

没有答案