Заканчивающее бассейн ранние периодически вылетает, когда размер возврата большойPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Заканчивающее бассейн ранние периодически вылетает, когда размер возврата большой

Сообщение Anonymous »

РЕДАКТИРОВАТЬ: Оказывается, это связано с размером возврата, а не изменчивостью. Обновленный минимальный пример, чтобы отразить постоянный размер, который все еще не удастся. передается в пул возвращает данные переменного размера. Это только если я попытаюсь выйти рано и вызовать pool.terminate () , поэтому ясно, что я упускаю некоторую очистку. но ничего не смог найти. < /p>
import multiprocessing
from signal import signal, SIGINT

def pool_initializer():
signal(SIGINT, lambda signum, frame: print(signum, frame))

def work(data):
output_dimensions = 256

return [[42 for x in range(output_dimensions)] for y in range(output_dimensions)]

if __name__ == "__main__":
with multiprocessing.Pool(processes=int(multiprocessing.cpu_count()/2), initializer=pool_initializer) as pool:
for result, preview in zip(pool.imap_unordered(work, range(10)), range(10)):
## Not exiting early results in zero crashes
if True:
break

## Intermittently crashes in pool.terminate()
pool.terminate()
pool.join()

print("Great success!")
< /code>
Traceback (most recent call last):
File "H:\wouldntyouliketoknowwaterboy\test.py", line 36, in
pool.terminate()
~~~~~~~~~~~~~~^^
File "C:\Users\wouldntyouliketoknowwaterboy\AppData\Local\Programs\Python\Python313\Lib\multiprocessing\pool.py", line 657, in terminate
self._terminate()
~~~~~~~~~~~~~~~^^
File "C:\Users\wouldntyouliketoknowwaterboy\AppData\Local\Programs\Python\Python313\Lib\multiprocessing\util.py", line 216, in __call__
res = self._callback(*self._args, **self._kwargs)
File "C:\Users\wouldntyouliketoknowwaterboy\AppData\Local\Programs\Python\Python313\Lib\multiprocessing\pool.py", line 703, in _terminate_pool
outqueue.put(None) # sentinel
~~~~~~~~~~~~^^^^^^
File "C:\Users\wouldntyouliketoknowwaterboy\AppData\Local\Programs\Python\Python313\Lib\multiprocessing\queues.py", line 394, in put
self._writer.send_bytes(obj)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^
File "C:\Users\wouldntyouliketoknowwaterboy\AppData\Local\Programs\Python\Python313\Lib\multiprocessing\connection.py", line 200, in send_bytes
self._send_bytes(m[offset:offset + size])
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\wouldntyouliketoknowwaterboy\AppData\Local\Programs\Python\Python313\Lib\multiprocessing\connection.py", line 287, in _send_bytes
raise ValueError("concurrent send_bytes() calls "
"are not supported")
ValueError: concurrent send_bytes() calls are not supported
< /code>
I could just filter the output and call it a day but then I would be left ignorant.
Can someone explain what is happening here?

Подробнее здесь: https://stackoverflow.com/questions/794 ... e-is-large
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»