pool.apply_async内创建globals()
时间: 2024-03-25 07:37:52 浏览: 63
在`pool.apply_async`内创建`globals()`是不可行的,因为每个进程都有自己的`globals()`,而且在新的进程中创建的`globals()`只能在该进程中访问,无法在其他进程中共享。如果您需要在多个进程之间共享变量,您可以使用`multiprocessing.Manager()`创建共享变量,例如:
```python
import multiprocessing
def worker(shared_dict):
# 在进程中更新共享变量
shared_dict["key"] = "value"
if __name__ == "__main__":
manager = multiprocessing.Manager()
shared_dict = manager.dict()
# 创建进程池
pool = multiprocessing.Pool(processes=4)
# 在进程池中执行任务
pool.apply_async(worker, args=(shared_dict,))
# 关闭进程池
pool.close()
pool.join()
# 打印共享变量
print(shared_dict)
```
在这个例子中,我们使用`multiprocessing.Manager()`创建了一个共享变量`shared_dict`,并将其传递给`worker()`函数。在`worker()`函数中,我们更新了`shared_dict`中的值。由于`shared_dict`是一个共享变量,因此在其他进程中也可以访问它。在主进程中,我们打印了`shared_dict`的值,可以看到它已经被更新了。
阅读全文