在multiprocessing.Pool().apply_async()运行的函数内无法识别globals()对象
时间: 2024-02-06 11:11:58 浏览: 158
Python多进程multiprocessing.Pool类详解
5星 · 资源好评率100%
对于`multiprocessing.Pool().apply_async()`运行的函数,它是在一个新的进程中执行的,因此不能识别主进程中的`globals()`对象。如果需要在新进程中使用某些全局变量,可以先将这些变量传递给`apply_async()`函数中的`args`或`kwds`参数。示例如下:
```python
import multiprocessing
global_var = 1
def func(arg1, arg2):
print(arg1, arg2, global_var)
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=4)
result = pool.apply_async(func, args=('hello', 'world'), kwds={'global_var': global_var})
pool.close()
pool.join()
```
在上面的示例中,`global_var`是一个全局变量,但是在`func()`函数中无法识别。我们将它作为关键字参数传递给`apply_async()`函数,然后在`func()`函数中就可以使用了。
阅读全文