小编mir*_*e2k的帖子

确定是否在root设备上运行

我的应用程序具有某些功能,只能在root可用的设备上运行.使用它时(而不是向用户显示相应的错误消息)不是让这个功能失败,而是我更喜欢能够静默检查root是否可用,如果没有,首先隐藏相应的选项.

有没有办法做到这一点?

android root

278
推荐指数
15
解决办法
15万
查看次数

确定Python是否在virtualenv中运行

是否可以确定当前脚本是否在virtualenv环境中运行?

python virtualenv

248
推荐指数
10
解决办法
9万
查看次数

Queue.Queue与collections.deque

我需要一个队列,多个线程可以放入东西,多个线程可以读取.

Python至少有两个队列类,Queue.Queue和collections.deque,前者似乎在内部使用后者.两者都声称在文档中是线程安全的.

但是,队列文档还指出:

collections.deque是无界队列的替代实现,具有快速原子append()和popleft()操作,不需要锁定.

我想我不太沉思:这是否意味着deque毕竟不是完全线程安全的?

如果是,我可能不完全理解这两个类之间的区别.我可以看到Queue添加了阻止功能.另一方面,它失去了一些deque功能,如支持运营商.

直接访问内部deque对象是

x在队列().deque

线程安全的?

另外,为什么当deque已经是线程安全的时候,Queue会使用互斥锁进行操作?

python queue thread-safety

160
推荐指数
5
解决办法
6万
查看次数

你如何在Python中使用省略号切片语法?

这出现在 Python的隐藏功能中,但我看不到可以解释该功能如何工作的好文档或示例.

python numpy subclass ellipsis slice

146
推荐指数
4
解决办法
4万
查看次数

Powershell:仅为单个命令设置环境变量

在Linux上,我可以这样做:

$ FOO=BAR ./myscript
Run Code Online (Sandbox Code Playgroud)

在设置环境变量FOO的情况下调用"myscript".

在Powershell中是否有类似的可能,即无需先设置变量,调用命令,然后再次取消设置变量?

为了更清楚我的用例 - 我不想将它作为脚本的一部分使用.相反,我有一个第三方脚本,其行为我可以使用环境变量控制,但在这种情况下,不是命令行参数.因此能够在打字之间交替

$ OPTION=1 ./myscript
Run Code Online (Sandbox Code Playgroud)

$ ./myscript
Run Code Online (Sandbox Code Playgroud)

会非常方便.

windows variables environment powershell scripting

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

Subversion:删除旧的功能分支与保留它们

我有一个带有标准布局的subversion存储库,即trunk /和branches /(和tags /).在进行更大的更改时,会使用功能分支,定期与主干同步,然后重新集成回主干(现在使用1.5).很标准的东西.

我想知道的是,这样一个功能分支,一旦完成并合并,应该保留或删除.颠覆书偶尔似乎暗示删除它们是很常见的,但我也看到了一堆开源项目确实保留了分支机构.

我也有点担心删除分支会如何更难以跟踪存在哪些分支,特别是当可能重复的名称进入场景时(比如我们搜索 - 重构两次),它们的提交历史在存储库深处的某处消失等等

另一方面,分支使用相当多,特别是现在使用1.5,我确实喜欢不必浏览大量非活动分支以找到我正在处理的分支.

我缺少的利弊是什么?人们在做什么?

svn version-control branch

39
推荐指数
4
解决办法
8702
查看次数

使Python json编码器支持Python的新数据类

从Python 3.7开始,有一种称为数据类的东西:

from dataclasses import dataclass

@dataclass
class Foo:
    x: str
Run Code Online (Sandbox Code Playgroud)

但是,以下失败:

>>> import json
>>> foo = Foo(x="bar")
>>> json.dumps(foo)
TypeError: Object of type Foo is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

如何将json.dumps()编码实例Foo转换为json 对象

python python-dataclasses

23
推荐指数
7
解决办法
6438
查看次数

Bash:以" - "开头的echo字符串

VAR="-e xyz"
echo $VAR
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这会打印"xyz".我似乎无法找到一种方法来获取字符串以-e开头.

这里发生了什么?

bash shell scripting

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

通过sys.modules提供虚拟包

说我有一个包"mylibrary".

我想让"mylibrary.config"可用于导入,可以是动态创建的模块,也可以是从完全不同的地方导入的模块,然后基本上"挂载"在"mylibrary"命名空间内.

即,我做:

import sys, types
sys.modules['mylibrary.config'] = types.ModuleType('config')
Run Code Online (Sandbox Code Playgroud)

给定设置:

>>> import mylibrary.config    # -> works

>>> from mylibrary import config
<type 'exceptions.ImportError'>: cannot import name config
Run Code Online (Sandbox Code Playgroud)

更奇怪的是:

>>> import mylibrary.config as X
<type 'exceptions.ImportError'>: cannot import name config
Run Code Online (Sandbox Code Playgroud)

因此,似乎使用直接导入工作,其他形式则不然.是否有可能使这些工作?

python import module

11
推荐指数
1
解决办法
1927
查看次数

Python:垃圾收集器的行为

我有一个Django应用程序,展示了一些奇怪的垃圾收集行为.有一个视图特别是每次调用时都会显着增加VM大小 - 达到某个限制,此时使用量会再次下降.问题是,在达到这一点之前需要相当长的时间,实际上运行我的应用程序的虚拟机没有足够的内存供所有FCGI进程占用尽可能多的内存.

我花了最近两天的时间来研究这个并学习Python垃圾收集,我想我现在明白了现在发生了什么 - 大部分时间.使用时

gc.set_debug(gc.DEBUG_STATS)
Run Code Online (Sandbox Code Playgroud)

然后对于单个请求,我看到以下输出:

>>> c = django.test.Client()
>>> c.get('/the/view/')
gc: collecting generation 0...
gc: objects in each generation: 724 5748 147341
gc: done.
gc: collecting generation 0...
gc: objects in each generation: 731 6460 147341
gc: done.
[...more of the same...]    
gc: collecting generation 1...
gc: objects in each generation: 718 8577 147341
gc: done.
gc: collecting generation 0...
gc: objects in each generation: 714 0 156614
gc: done.
[...more of the same...]
gc: collecting …
Run Code Online (Sandbox Code Playgroud)

python memory django garbage-collection

9
推荐指数
1
解决办法
2453
查看次数