python3 多进程讲解 multiprocessing
multiprocessing
是 Python 中一个用来并发执行任务的模块,允许程序员充分利用机器上的多个 CPU 或多核处理器。
以下是一些使用 multiprocessing
的常见方法:
- 使用
Process
类创建进程
from multiprocessing import Process
def f(name):
print('Hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
在这个例子中,我们创建了一个新的进程,并将目标函数 f
和参数传递给它。然后我们启动进程,并调用 join
方法来等待进程完成。
- 使用
Pool
创建进程池
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
with Pool(processes=4) as pool:
result = pool.map(f, range(10))
print(result)
在这个例子中,我们创建了一个进程池,其中有 4 个进程。然后我们在进程池中并行地应用函数 f
。
- 使用
Manager
创建共享内存
from multiprocessing import Process, Manager
def f(d, key, value):
d[key] = value
if __name__ == '__main__':
with Manager() as manager:
d = manager.dict()
p = Process(target=f, args=(d, 'key', 'value'))
p.start()
p.join()
print(d)
在这个例子中,我们创建了一个可以在多个进程之间共享的字典 d
。然后我们在一个进程中修改这个字典,并打印出修改后的结果。
- 使用
Lock
来进行同步
from multiprocessing import Process, Lock
def f(l, i):
with l:
print('Hello', i)
if __name__ == '__main__':
lock = Lock()
for num in range(5):
Process(target=f, args=(lock, num)).start()
在这个例子中,我们使用锁来确保同一时间只有一个进程可以打印消息。
以上就是使用 multiprocessing
模块的一些基本方法。这个模块还有更多的高级功能,如进程间通信和死锁检测等,值得深入学习。
评论已关闭