我正在使用以下示例来尝试并弄清楚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!")
答案 0 :(得分:2)
操作系统的功能之一是任务调度。而这正是将会发生的情况。您所有的线程都将添加到调度程序列表中,它将定期检查每个任务并在短时间内运行每个任务。由于您的所有工作都是睡眠,因此它可能只会在开始和结束时进行检查(系统睡眠请求告诉调度程序该任务在一段时间内不需要任何处理)。