Многопроцессорность, асинхронность и юпитер - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь запустить подпроцесс из ноутбука Jupyter, который требует asyncio. Я перевел это на этот базовый c пример, который иллюстрирует мою проблему.

from multiprocessing import Process, Queue
import asyncio

async def test(q, val):

    await asyncio.sleep(1)
    q.put(val)


def start1(q, val):
    loop = asyncio.get_event_loop()
    loop.run_until_complete(test(q, val))

def start2(q, val):
    asyncio.ensure_future(test(q, val))

q = Queue()
process = Process(
    target=start,
    args=(q, 123)
)
process.start()

, когда я создаю процесс с

target=start1

, я получаю

RuntimeError: This event loop is already running

что аналогично вызову start1 непосредственно из блокнота jupyter.

, когда я создаю процесс с

targert=start2

, процесс выполняется с кодом выхода 0, что указывает на отсутствие ошибки, но в очередь ничего не добавляется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...