python-3.x - python中的多处理问题[OSError:[WinError 6]无效的驱动程序]
问题描述
首先,我为我的英语道歉。
我在python中实现了一个纸牌游戏。我需要创建几个并行运行函数genararArbol 的进程。它们是在游戏开始时创建的,每次代理必须玩时,他使用管道向每个进程发送一条消息以生成另一棵树。
def play(self, table, canticos, cartasConocidas):
if self.n_baza == 0:
time = 1500 #tiempo maximo que se ejecutara cada proceso
manager = Manager()
self.nProcesos = multiprocessing.cpu_count()*4 #numero de procesos a crear, dependiendo de los cores de la maquina, 4 procesos por nucleo
self.procesos = []
self.mejores = manager.Queue()
for _ in range(self.nProcesos):
server, client = Pipe(duplex=False)
p = Process(target=self.generarArbol, args=(time, server, self.name, self.nameA, self.nameB, self.mejores,)) #se crear el proceso con sus atributos
p.daemon = True
self.procesos.append(client) #lo incluimos en la lista de pipes
p.start() #ejecutamos el proceso
matriz = self.cards_matrix.returnInstance(self.n_baza, table) #se crea una instancia de la matriz aleatoria
for s in self.procesos:
s.send([copy(matriz), copy(table), copy(self.n_baza)]) #se reanudan los procesos y se ejecutan los arboles
def generarArbol(self, time, server, name, nameA, nameB, mejores):
from Clases.MCTS_TuteState import TuteState
while True:
[matriz, table, n_baza] = server.recv() #espera hasta recibir mensaje
initialState = TuteState(matriz, table, n_baza, name, nameA, nameB)
arb = mcts(timeLimit=time)
carta = arb.search(initialState=initialState)
mejores.put(carta)
问题是当我执行它时,这个错误出现在每个进程中:
Exception ignored in: <function _ConnectionBase.__del__ at 0x128F14B0>
Traceback (most recent call last):
File "C:\Users\litoi\AppData\Local\Programs\Python\Python37-32\lib\multiprocessing\connection.py", line 132, in __del__
self._close()
File "C:\Users\litoi\AppData\Local\Programs\Python\Python37-32\lib\multiprocessing\connection.py", line 277, in _close
_CloseHandle(self._handle)
OSError: [WinError 6] Controlador no válido
我认为这是关于管道的。我认为这是一个 Windows 问题,但我在 Ubuntu 中尝试过,它也给出了同样的错误。我不懂为什么。
问候。
解决方案
推荐阅读
- php - 使用 .htaccess 删除 url 中的双斜杠
- php - 如何在根目录中选择要压缩的特定目录
- python - 脚本运行后数据未写入 csv 文件
- javascript - Node.js 库是否应该同时支持 Promise 和回调
- sql - 如何在不重复的情况下连接 2 个外键上的表?
- redux-saga - redux-saga 为什么在 put 旁边需要一个 yield?
- python - Django 设置和检索会话数据
- javascript - Bootstrap 4 中的 HTML Popover 失败
- javascript - 如何将我的数组从 ["1","2","3","4"] 转换为 [1,2,3,4]?
- java - 从 Firebase 检索数据、映射到 ArrayList 中的元素以及排序