每次打开Python文件时,PyCharm都会隐藏所有导入并显示:
import ...
Run Code Online (Sandbox Code Playgroud)
在编辑器内.
我必须手动展开它以查看导入.在哪里可以找到撤消import语句自动隐藏的设置?
多处理是python中一个强大的工具,我想更深入地理解它.我想知道何时使用常规 锁和队列以及何时使用多处理管理器在所有进程之间共享这些.
我提出了以下测试场景,其中包含四种不同的多处理条件:
使用池和NO管理器
使用池和管理器
使用单个流程和NO Manager
使用单个进程和Manager
所有条件都执行作业功能the_job.the_job由一些由锁固定的印刷组成.此外,函数的输入只是放入队列(以查看它是否可以从队列中恢复).该输入是一个简单的索引idx从range(10)在称为主脚本创建start_scenario(在底部示出).
def the_job(args):
"""The job for multiprocessing.
Prints some stuff secured by a lock and
finally puts the input into a queue.
"""
idx = args[0]
lock = args[1]
queue=args[2]
lock.acquire()
print 'I'
print 'was '
print 'here '
print '!!!!'
print '1111'
print 'einhundertelfzigelf\n'
who= ' By run %d \n' …Run Code Online (Sandbox Code Playgroud) 我正在使用Ubuntu 12.04并希望与python 2.7并排使用python 3.4.
python 3.4的安装工作正常.但是,我无法安装python 3的numpy包(因此我无法安装scipy,pandas等).
运用
sudo pip3 install numpy
Run Code Online (Sandbox Code Playgroud)
吐出以下错误:
File "numpy/core/setup.py", line 289, in check_types
"Cannot compile 'Python.h'. Perhaps you need to "\
SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我已经安装了python-dev.
而且,安装numpy via
sudo apt-get install python-numpy
Run Code Online (Sandbox Code Playgroud)
不起作用,因为我已经为python 2.7安装了numpy,安装程序响应numpy已经是最新的.
我能做什么?谢谢!
我将工作服与coverage.py结合使用来跟踪测试脚本的python代码覆盖率.我使用以下命令:
coverage run --parallel-mode --source=mysource --omit=*/stuff/idont/need.py ./mysource/tests/run_all_tests.py
coverage combine
coveralls --verbose
Run Code Online (Sandbox Code Playgroud)
除了多处理之外,这非常有效.不跟踪工作池或子进程执行的代码.
是否有可能跟踪多处理代码?我遗失的任何特定选项?可能会在多处理库中添加包装器,以便在每次生成新进程时开始覆盖?
编辑:
我(和jonrsharpe,也:-)发现了一个用于多处理的猴子补丁.
但是,这对我不起作用,我的Tracis-CI版本几乎在开始后就被杀死了.我检查了我的本地机器上的问题,显然是将补丁添加到多处理程序中破坏了我的记忆.使用此修复程序,占用少于1GB内存的测试需要超过16GB.
编辑2:
猴子补丁在经过一些小修改后确实有效:删除config_file解析(config_file=os.environ['COVERAGE_PROCESS_START'])就可以了.这解决了臃肿记忆的问题.因此,相应的行简单地变为:
cov = coverage(data_suffix=True)
Run Code Online (Sandbox Code Playgroud) 我有一个sphinx文档,当我包含以下行时:
.. currentmodule:: myMod
.. autosummary::
MyClass
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
ERROR: Unknown directive type "autosummary".
Run Code Online (Sandbox Code Playgroud)
然而,autosummary从版本0.6开始可用,我使用Sphinx 1.1.3.
什么可能导致问题?谢谢!
编辑:为了使它更清楚我在谈论python-sphinx,文档工具.
如何判断自动扩展扩展不仅列出单个类,还列出所有类的成员?
如果我使用:
.. autosummary::
MyClass
Run Code Online (Sandbox Code Playgroud)
在生成的html文件中,只有一个简短的摘要,如:
MyClass(var1,var2,....)我的自定义类来做奇特的事情......
我真正想要的是:
MyClass(var1,var2,....)我的自定义类来做奇特的事情......
MyClass.doA(var1,var2,...)做得很好
MyClass.doB(var1,var2,...)B更好
我如何配置autosummary指令才能得到这个(除了在autosummary指令中自己命名所有函数)?谢谢!
我怎么能代替*args和**kwargs与装饰功能的文档中的真实签名?
假设我有以下装饰器和装饰功能:
import functools
def mywrapper(func):
@functools.wraps(func)
def new_func(*args, **kwargs):
print('Wrapping Ho!')
return func(*args, **kwargs)
return new_func
@mywrapper
def myfunc(foo=42, bar=43):
"""Obscure Addition
:param foo: bar!
:param bar: bla bla
:return: foo + bar
"""
return foo + bar
Run Code Online (Sandbox Code Playgroud)
因此,通话print(myfunc(3, 4))给我们:
Wrapping Ho!
7
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.我还希望我的库包含myfunc与Sphinx一起正确记录的文件.但是,如果我通过以下方式将我的函数包含在我的sphinx html页面中:
.. automodule:: mymodule
:members: myfunc
Run Code Online (Sandbox Code Playgroud)
它实际上会显示为:
模糊的加法
我怎样才能摆脱myfunc(*args, **kwargs)标题中的泛型?这应该被myfunc替换(foo = …
python documentation decorator python-sphinx python-decorators
我需要通过每组中的平均值填充pandas DataFrame中的缺失值.根据这个问题 transform可以实现这一点.
但是,transform对我来说太慢了.
例如,对具有100个不同组和70%NaN值的大型DataFrame进行以下设置:
import pandas as pd
import numpy as np
size = 10000000 # DataFrame length
ngroups = 100 # Number of Groups
randgroups = np.random.randint(ngroups, size=size) # Creation of groups
randvals = np.random.rand(size) * randgroups * 2 # Random values with mean like group number
nan_indices = np.random.permutation(range(size)) # NaN indices
nanfrac = 0.7 # Fraction of NaN values
nan_indices = nan_indices[:int(nanfrac*size)] # Take fraction of NaN indices
randvals[nan_indices] = …Run Code Online (Sandbox Code Playgroud) 假设我有一个泡菜转储——无论是作为一个文件还是一个字符串——我如何确定用于自动创建泡菜转储的协议?
如果是这样,我是否需要阅读整个转储来找出协议,还是可以在 O(1) 中实现?通过 O(1),我考虑了 pickle 字符串或文件开头的一些标头信息,其读出不需要处理整个转储。
非常感谢!
编辑:我对此有一个更新,显然下面给出的答案在python 3.4下并不总是有效。如果我只是True用协议 1腌制值,有时我只能恢复协议 0 :-/
我试图在PyCharm(2.7.3)中使用与python 2和3并排的鼻子测试.
在python 2.7下一切正常,但是python 3.4中的任何测试都会失败并出现以下错误:
Traceback (most recent call last):
File "/home/robert/Programme/pycharm-2.7.3/helpers/pycharm/noserunner.py", line 91, in <module>
process_args()
File "/home/robert/Programme/pycharm-2.7.3/helpers/pycharm/noserunner.py", line 88, in process_args
TestProgram(argv=argv, config=config)
File "/usr/local/lib/python3.4/dist-packages/nose/core.py", line 121, in __init__
**extra_args)
File "/usr/lib/python3.4/unittest/main.py", line 93, in __init__
self.runTests()
File "/usr/local/lib/python3.4/dist-packages/nose/core.py", line 207, in runTests
result = self.testRunner.run(self.test)
File "/usr/local/lib/python3.4/dist-packages/nose/core.py", line 62, in run
test(result)
File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 177, in __call__
return self.run(*arg, **kw)
File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 224, in run
test(orig)
File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 177, in __call__
return self.run(*arg, **kw) …Run Code Online (Sandbox Code Playgroud) python ×9
pycharm ×2
code-folding ×1
coverage.py ×1
coveralls ×1
decorator ×1
import ×1
locking ×1
mean ×1
nan ×1
nose ×1
nosetests ×1
numpy ×1
pandas ×1
pickle ×1
pip ×1
python-2.7 ×1
python-3.4 ×1
python-3.5 ×1
python-3.x ×1
ubuntu ×1