python multiprocessing apply()、map()、apply_async()、map_async() 如何使用
时间: 2024-02-20 08:58:48 浏览: 69
pandas使用函数批量处理数据(map、apply、applymap)
这些函数是Python中用于实现进程池的函数。下面是它们的使用方法:
1. apply():该函数是同步的,它会阻塞当前进程,直到子进程执行完毕并返回结果。使用方法如下:
```python
from multiprocessing import Pool
def func(x):
return x * x
if __name__ == '__main__':
pool = Pool(processes=4)
result = pool.apply(func, (10, ))
print(result)
```
2. map():该函数是同步的,它会阻塞当前进程,直到子进程执行完毕并返回结果。使用方法如下:
```python
from multiprocessing import Pool
def func(x):
return x * x
if __name__ == '__main__':
pool = Pool(processes=4)
result = pool.map(func, [1, 2, 3, 4, 5])
print(result)
```
3. apply_async():该函数是异步的,它不会阻塞当前进程,而是立即返回一个AsyncResult对象。使用方法如下:
```python
from multiprocessing import Pool
def func(x):
return x * x
if __name__ == '__main__':
pool = Pool(processes=4)
result = pool.apply_async(func, (10, ))
print(result.get())
```
4. map_async():该函数是异步的,它不会阻塞当前进程,而是立即返回一个AsyncResult对象。使用方法如下:
```python
from multiprocessing import Pool
def func(x):
return x * x
if __name__ == '__main__':
pool = Pool(processes=4)
result = pool.map_async(func, [1, 2, 3, 4, 5])
print(result.get())
```
注意:apply_async() 和 map_async() 的返回值是一个AsyncResult对象,可以调用其get()方法获取结果。而 apply() 和 map() 则会直接返回结果。
阅读全文