小编Iva*_*lev的帖子

从大词典中弹出N个项目的最快方法

我有一个大字典src(最多1M个项目),我想取N个(典型值为N = 10K-20K)项目,将它们存储在一个新的字典中dst,仅将其余项目保留在中src。拿走N个项目都没关系。我正在寻找在Python 3.6或3.7上最快的方法。

到目前为止,我发现的最快方法是:

src = {i: i ** 3 for i in range(1000000)}

# Taking items 1 by 1 (~0.0059s)
dst = {}
while len(dst) < 20000:
    item = src.popitem()
    dst[item[0]] = item[1]
Run Code Online (Sandbox Code Playgroud)

有更好的吗?即使是边际收益也将是好的。

python optimization performance dictionary python-3.x

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

IntelliJ + Python 插件:Python 远程解释器在没有类路径的情况下创建,不起作用

当我创建新的远程 Python 解释器时,IntelliJ 没有找到我的代码的任何依赖项,并且似乎没有索引任何库。大部分代码是红色的。我想我已经指出“类路径”完全是空的,这与我添加的其他一些 Python SDK(本地 SDK)不同。有时,我可以通过在界面中单击来使其使用指向 IntelliJ Caches 目录的路径填充类路径,但大多数时候它不起作用,并且我无法重现如何使其工作。如何确保正确填充类路径?

我使用的是 IntelliJ Ultimate 版本 2016.2.1。使用Python插件版本2016.2.162.43。我正在 Vagrant 虚拟机上进行开发,并添加了一个位于虚拟机内的虚拟环境 (venv) 内的 Python 远程解释器。当我添加远程解释器时,我使用:

  • 在 SDK 选项卡上 - + 按钮。
  • Python SDK
  • 添加遥控器
  • 我选择 Vagrant 选项
  • 将其指向我的 Vagrant 项目目录。
  • 将其指向我的 virtualenv 中的 python3.5 可执行文件
  • 添加SDK

然后类路径如下所示:https://www.dropbox.com/s/3xbzopb4y9bhn0u/Screenshot%202016-08-11%2017.19.43.png?dl=0并且 IntelliJ 无法识别任何库/内置程序。对于其他 SDK,类路径包含多个名称中带有 remote_sources、python_stubs 或 python-sculpts 的条目,并且它们可以工作。

python intellij-idea

6
推荐指数
1
解决办法
873
查看次数

Python 3 asyncio - 来自vs asyncio.async堆栈使用率

我正在使用Python 3 asyncio框架评估不同的模式以定期执行(实际的睡眠/延迟以简化),我有两段代码表现得很差,我无法解释原因.yield from正如我所料,第一个版本用于递归调用自身耗尽大约1000次迭代的堆栈.第二个版本递归调用协程,但委托实际的事件循环执行到asyncio.async并且不会耗尽堆栈.你能详细解释为什么第二个版本没有使用堆栈吗?执行此协程的两种方式有什么区别?

第一版(收益率):

@asyncio.coroutine
def call_self(self, i):
    print('calling self', i)
    yield from self.call_self(i + 1)
Run Code Online (Sandbox Code Playgroud)

第二个版本(asyncio.async):

@asyncio.coroutine
def call_self(self, i):
    print('calling self', i)
    asyncio.async(self.call_self(i + 1))
Run Code Online (Sandbox Code Playgroud)

python coroutine python-3.x python-asyncio

4
推荐指数
1
解决办法
3420
查看次数