Multiprocessing 模块的 Process 类表示进程,可通过创建 Process 类对象来创建一个进程,并通过关键字参数 args 将一个 tuple 中的参数传递给进程函数 worker()。例如:
import multiprocessing
def worker(arg):
print("Hello, I am subprocess " ,arg)
if __name__ == "__main__":
print('I am parent process')
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
输出:
I am parent process
在操作系统的命令行运行上述程序,将输出下面的结果:
I am parent process
Hello, I am subprocess 1
Hello, I am subprocess 0
Hello, I am subprocess 4
Hello, I am subprocess 2
Hello, I am subprocess 3
可以看出,这些进程的执行顺序是不确定的,这是竞争使用 CPU 的结果。 在上述代码中,子进程的函数代码和主进程的代码在同一脚本文件中,通常将子进程的代码放在另外一个单独的脚本文件中。例如:
import multiprocessing
import worker
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker.worker,args=(i,))
jobs.append(p)
p.start()
def worker(arg):
print('Hello, I am subprocess ',arg)
return
|