我需要使用多处理将对象附加到来自不同进程的一个列表“L”,但它返回空列表. 如何使用多处理将许多进程附加到列表“L”?#!/usr/bin/pythonfrom multiprocessing import ProcessL=[]def dothing(i,j):L.append(a...

我需要使用多处理将对象附加到来自不同进程的一个列表“L”,但它返回空列表.
如何使用多处理将许多进程附加到列表“L”?
#!/usr/bin/python
from multiprocessing import Process
L=[]
def dothing(i,j):
L.append("anything")
print i
if __name__ == "__main__":
processes=[]
for i in range(5):
p=Process(target=dothing,args=(i,None))
p.start()
processes.append(p)
for p in processes:
p.join()
print L
解决方法:
全局变量不在进程之间共享.
你需要使用multiprocessing.Manager.list:
from multiprocessing import Process, Manager
def dothing(L, i): # the managed list `L` passed explicitly.
L.append("anything")
if __name__ == "__main__":
with Manager() as manager:
L = manager.list() # <-- can be shared between processes.
processes = []
for i in range(5):
p = Process(target=dothing, args=(L,i)) # Passing the list
p.start()
processes.append(p)
for p in processes:
p.join()
print L
请参见Sharing state between processes?(服务器进程部分).
沃梦达教程
本文标题为:Python:使用多处理从不同进程附加到同一列表


基础教程推荐
猜你喜欢
- 在python中使用pickle时发生内存泄漏 2023-11-14
- windows10 Python2和Python3共存 2023-09-04
- python 进程池pool 2023-09-04
- Python yield 关键词, 2023-08-04
- python多进程并发 2023-09-03
- Pytorch使用transforms 2023-08-04
- Python实现人机中国象棋游戏 2023-08-11
- Python:使用Winsound在内存中播放WAV-SND_MEMORY 2023-11-14
- Python名片管理系统彩色控制台版实现 2022-08-30
- windows下使用pycharm配置python的virtualenv环境 2023-09-04