python - 多处理、异步和 jupyter
问题描述
我正在尝试从需要 asyncio 的 jupyter 笔记本运行子进程。我已将其提炼为说明我的问题的基本示例。
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
这就像我直接从 jupyter notebook 调用 start1 一样。
当我创建流程时
targert=start2
该进程以 exitcode 0 执行,表示没有错误,但没有任何内容添加到队列中。
解决方案
推荐阅读
- http - POST 方法 (HTTP)。批量操作
- android - 错误:没有找到适合 show(androidx.fragment.app.FragmentManager,String) 的方法
- reactjs - 账户在[payable]方法中收到一定数额的余额后重定向页面?
- c++ - 为什么即使我“使用命名空间 std;”,我也可以使用 std 命名空间中的名称?
- python - 如何创建函数以在 api 调用中传递 lat long 以获取天气数据
- grid - Tesseract OCR 正确扫描网格
- cmake - cmake 助手创建
来自本地库的 _ROOT 变量 - python - “未解决的参考‘地点’”
- r - 合并具有相同名称的数据框和总和列
- events - python - 如何在plotly,python中使用不同的滑块控制不同的轨迹