标签: event-loop

Python,调用进程池而不阻塞事件循环

如果我运行以下代码:

import asyncio
import time
import concurrent.futures

def cpu_bound(mul):
    for i in range(mul*10**8):
        i+=1
    print('result = ', i)
    return i

async def say_after(delay, what):
    print('sleeping async...')
    await asyncio.sleep(delay)
    print(what)

# The run_in_pool function must not block the event loop
async def run_in_pool():
    with concurrent.futures.ProcessPoolExecutor() as executor:
        result = executor.map(cpu_bound, [1, 1, 1])

async def main():
    task1 = asyncio.create_task(say_after(0.1, 'hello'))
    task2 = asyncio.create_task(run_in_pool())
    task3 = asyncio.create_task(say_after(0.1, 'world'))

    print(f"started at {time.strftime('%X')}")
    await task1
    await task2
    await task3
    print(f"finished at {time.strftime('%X')}")

if __name__ …
Run Code Online (Sandbox Code Playgroud)

python event-loop coroutine python-asyncio python-multiprocessing

3
推荐指数
1
解决办法
3359
查看次数

asyncio.run RuntimeError:事件循环已关闭

import robloxapi, asyncio
client = robloxapi.Client(".ROBLOSECURITY Cookie Here") # Removed this for security reasons

async def main():
    user = await client.get_self()

    try:
        role = await user.get_role_in_group(1)
    except robloxapi.utils.errors.NotFound:
        role = None

    if role:    
        print(role.name)
    else:
        print("Not in group")

asyncio.run(main())
Run Code Online (Sandbox Code Playgroud)

这段代码正在引发RuntimeError: Event loop is closed,我不知道为什么,

我尝试用这个替换 asyncio.run

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
Run Code Online (Sandbox Code Playgroud)

但它给了我同样的错误

python runtime-error event-loop roblox python-asyncio

3
推荐指数
1
解决办法
1万
查看次数

NextJS API 路由在收到数据之前返回?

我不确定这里发生了什么事。我在 NextJS 中设置了一个 API 路由,该路由在数据加载之前返回。有人可以指出这里有任何错误吗?

我有一个调用 makeRequest() 中的数据的函数:

export async function getVendors() {
  const vendors = await makeRequest(`Vendor.json`);
  console.log({ vendors });
  return vendors;
}
Run Code Online (Sandbox Code Playgroud)

然后路由:/api/vendors.js

export default async (req, res) => {
  const response = await getVendors();
  return res.json(response);
};
Run Code Online (Sandbox Code Playgroud)

这是 makeRequest 函数:

const makeRequest = async (url) => {
  // Get Auth Header
  const axiosConfig = await getHeader();

  // Intercept Rate Limited API Errors & Retry
  api.interceptors.response.use(
    function (response) {
      return response;
    },
    async function (error) {
      await new …
Run Code Online (Sandbox Code Playgroud)

event-loop settimeout async-await es6-promise next.js

3
推荐指数
1
解决办法
9248
查看次数

为什么需要异步请求的事件循环(例如,AJAX长轮询)

我知道使用普通的线程网络服务器(例如Apache)进行AJAX长轮询是不好的设计......但我真的不明白为什么.

是因为每个longpolling请求比正常请求花费的时间要多得多(从而占用处理器)?如果是这种情况,那么线程是否真的需要花费很多开销才能在使用之前保持闲置一段时间?

ajax event-loop long-polling

2
推荐指数
1
解决办法
622
查看次数

事件循环作为语言构造公开的其他语言(框架)?

http://nodejs.org/#about,它说如下:

"节点在设计上与Ruby的事件机器或Python的Twisted等系统相似并受其影响.节点将事件模型更进一步 - 它将事件循环呈现为语言结构而不是库."

是否有其他框架或语言同样暴露事件循环?

event-loop node.js

2
推荐指数
2
解决办法
1072
查看次数

QCoreApplication::quit() 是否取消所有挂起的事件?

QCoreApplication::quit()的文档中,我并没有立即清楚这一点。

当调用 quit() 槽时,事件循环中是否有任何挂起的事件被取消?

events qt event-loop

2
推荐指数
1
解决办法
1677
查看次数

Python 3的事件循环实现?

有没有人知道Python 3可用的事件循环库(或绑定)?没关系,如果它只是UNIX系统,虽然我更喜欢做Windows的东西.

ETA:我意识到编写事件循环系统并不是非常困难.但是,我不想重新发明轮子(我们仍然鼓励这些天不这样做,对吗?;-))

这是针对服务器应用程序计划的,所以显然我想要一些与GUI小部件工具包无关的东西.

如果答案是"不,没有一个"(可能;我确定无法找到),那么我很可能为libev创建Python 3的绑定.

event-handling event-loop python-3.x

2
推荐指数
2
解决办法
5487
查看次数

Netty:Boss Event Loop和Executor

在我目前使用Netty的大多数示例中,我看到boss执行器是一个缓存的线程池.根据我的理解,事件循环应该只有一个线程,为什么我们需要一个缓存的线程池用于boss事件循环?

java event-loop netty

2
推荐指数
1
解决办法
5069
查看次数

了解执行模型和事件循环

我已经阅读了很多有关JavaScript单线程执行模型,事件循环和事件队列的文章。

有一件事还不清楚。我创建了一个小提琴来说明我的问题:http : //jsfiddle.net/yzpmf67f/

<button onClick="window.compute()">Do computation</button>
<button onClick="alert('doing')">Do something else</button>

window.compute = function compute() {
var result = 0;
for (var i = 0; i < 100000; i++) {
    for (var j = 0; j < 100000; j++) {
        result = i + j;
    }
};
var textnode = document.createTextNode(result);
document.body.appendChild(textnode);
Run Code Online (Sandbox Code Playgroud)

}

如果单击“执行计算”按钮,将需要一些时间并阻塞页面。但是,如果单击“执行其他操作”按钮,则页面仍处于挂起状态时,它仍将添加到队列中并在我们的计算完成后执行。

因此,如果JS是单线程的,谁在我们计算其他内容时将UI事件放入事件队列?

javascript event-loop

2
推荐指数
1
解决办法
414
查看次数

小 node.js 示例中的回调队列顺序

"use strict"

const
    fs = require('fs'),
    stream = fs.createReadStream("file.txt"),
    timeout = 0;

stream.on('data', function() {
    console.log("File Read");
});

setTimeout(function(){
    console.log("setTimeout : " + timeout);
}, timeout);
Run Code Online (Sandbox Code Playgroud)

我正在学习 node.js / javascript,我想知道为什么这个程序会返回

setTimeout : 0
File Read
Run Code Online (Sandbox Code Playgroud)

而不是相反。

如果我错了,请纠正我,但在javascript回调队列中是fifo,stream首先堆叠第一个和第一个?

我认为由于 的非阻塞性质nodejs,两个回调都以“并行”运行并setTimeout首先完成并返回(例如 1000 毫秒的超时将切换结果。)

javascript callback event-loop node.js

2
推荐指数
1
解决办法
886
查看次数