在单核上进行多处理?

时间:2019-03-12 14:36:04

标签: python multiprocessing

我正在使用以下示例来尝试并弄清楚Python中的 multiprocessing 模块,但是随后我开始怀疑,当您在单核CPU上尝试并进行多进程时会发生什么?以下示例将发生什么情况?我认为它会会运行,但是到底会发生什么呢?

import os
import random
import sys
import time
import multiprocessing
from multiprocessing import pool

if __name__ == '__main__':
def worker(number):
    sleep = random.randrange(1, 10)
    time.sleep(sleep)
    print("I am Worker {}, I slept for {} seconds".format(number, sleep))

for i in range(5):
    t = multiprocessing.Process(target=worker, args=(i,))
    t.start()

print("All Processes are queued, let's see when they finish!")

1 个答案:

答案 0 :(得分:2)

操作系统的功能之一是任务调度。而这正是将会发生的情况。您所有的线程都将添加到调度程序列表中,它将定期检查每个任务并在短时间内运行每个任务。由于您的所有工作都是睡眠,因此它可能只会在开始和结束时进行检查(系统睡眠请求告诉调度程序该任务在一段时间内不需要任何处理)。