小编SmC*_*lar的帖子

在PyCharm中使用nosetests,python 2和3并排安装

我试图在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)

nose nosetests pycharm python-2.7 python-3.x

7
推荐指数
1
解决办法
1442
查看次数

如何访问 python 中所有现有的日志处理程序?

在不确切知道它们所附加的记录器的情况下,如何找到所有日志记录处理程序?

import logging
logging._handlerList
Run Code Online (Sandbox Code Playgroud)

安全的?

或者我真的必须通过所有记录器

logging.Logger.manager.loggerDict.keys()
Run Code Online (Sandbox Code Playgroud)

并手动获取记录器的处理程序?

python logging

7
推荐指数
0
解决办法
985
查看次数

如何使用德语键盘在IPython笔记本中阻止注释代码?

如何在德语键盘布局的IPython Notebook中阻止对选定文本的注释?Ctrl- /不起作用,在德语键盘上实际上是Ctrl-Shift-7。

comments ipython-notebook

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

从python列表中删除项目,如何比较项目(例如numpy数组)?

我对python(2.7)list.remove函数感到有点困惑.在删除它的文档中说:"从列表中删除值为x的第一个项目.如果没有这样的项目,则会出错."

所以,我猜这里的价值意味着比较是基于平等(即==)而非基于身份(即is).但是,有人可以向我解释以下行为.显然,两种比较都被使用,但是以一种相当奇怪的方式:

import numpy as np

x = np.array([1,2,3])
mylist = [x, 42, 'test', x] # list containing the numpy array twice
print mylist
Run Code Online (Sandbox Code Playgroud)

当然,这将打印:

[array([1, 2, 3]), 42, 'test', array([1, 2, 3])]
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但奇怪的是,以下代码执行:

mylist.remove(x)
print mylist
Run Code Online (Sandbox Code Playgroud)

[42, 'test', array([1, 2, 3])]
Run Code Online (Sandbox Code Playgroud)

我希望它会抛出一个错误,因为numpy数组不返回布尔语句而是返回布尔数组.例如,x == x退货array([ True, True, True], dtype=bool).然而,我们的移除愉快地执行.但是,再次调用相同的语句会产生预测的行为:

mylist.remove(x)
Run Code Online (Sandbox Code Playgroud)

抛出一个

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-835a19b5f6a9> …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy equality list

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

Pandas和多处理内存管理:将DataFrame拆分为多个块

我必须pandas.DataFrame逐行处理一个巨大的(几十GB),每行操作都很长(几十毫秒).所以我有了将框架拆分成块并使用并行处理每个块的想法multiprocessing.这确实加快了任务,但内存消耗是一场噩梦.

虽然每个子进程原则上只占用一小部分数据,但它需要(几乎)与包含原始进程的原始父进程一样多的内存DataFrame.即使删除父进程中使用过的部分也无济于事.

我写了一个复制这种行为的最小例子.它唯一能做的就是创建一个DataFrame带有随机数的大块,将它分成最多100行的小块,然后简单地打印一些关于DataFrame多处理过程中的信息(这里通过mp.Pool4号大小).

并行执行的主要功能:

def just_wait_and_print_len_and_idx(df):
    """Waits for 5 seconds and prints df length and first and last index"""
    # Extract some info
    idx_values = df.index.values
    first_idx, last_idx = idx_values[0], idx_values[-1]
    length = len(df)
    pid = os.getpid()

    # Waste some CPU cycles
    time.sleep(1)

    # Print the info
    print('First idx {}, last idx {} and len {} '
          'from process {}'.format(first_idx, last_idx, length, pid))
Run Code Online (Sandbox Code Playgroud)

辅助生成器将一个块DataFrame分成小块:

def df_chunking(df, …
Run Code Online (Sandbox Code Playgroud)

python memory multiprocessing pandas python-3.5

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

如何更改Kubernetes cronjob的时间表或如何手动启动它?

有一个简单的方法来改变一个kubernetes时间表的cronjob喜欢kubectl change cronjob my-cronjob "10 10 * * *"?或者任何其他方式而不需要做kubectl apply -f deployment.yml什么?后者在复杂的CI/CD设置中可能非常麻烦,因为通常不需要手动编辑部署yaml,尤其是在文件是在构建过程中从模板创建的情况下.

或者,有没有办法手动启动cronjob?例如,一项工作计划在22小时内开始,但是我想现在手动触发一次而不改变cron时间表(用于测试或初始运行)?

cron kubernetes kubectl

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

在Python中的现有迭代器上使用iter:迭代器会发生什么?

国际热核实验堆函数封装像列表或元组对象,以便将它们作为迭代器,即一个能够使用next,例如。例如,

next(iter([1, 2, 3]))
Run Code Online (Sandbox Code Playgroud)

返回1。

如果我们传递给的对象iter已经是迭代器,内部会发生什么?它是否只是返回原始对象,即无操作?还是产生一个包装原始迭代器的新迭代器?当然,包装并不是指复制原始的迭代器。

python iterator

5
推荐指数
1
解决办法
193
查看次数

Lock.acquire() 上的 Python 3.4 多处理错误,类型错误:需要整数

有时将多处理池与管理器和 Python 3.4 结合使用,lock.acquire()会抛出一个奇怪的TypeError: an integer is required (got type NoneType).

有几次这出现在我的 Travis 测试套件上,我无法弄清楚它来自哪里以及它意味着什么。更糟糕的是,我无法可靠地重现它,它只是发生或不发生。通常它不是,而是每一百次运行一次左右它确实:-(。

我完全迷失了。也许有人以前遇到过这样的事情,并且可以提示在哪里寻找错误的来源。让我从完整的回溯开始:

Traceback (most recent call last):
  File "/home/travis/miniconda/envs/test-environment/lib/python3.4/multiprocessing/pool.py", line 119, in worker
    result = (True, func(*args, **kwds))
  File "/home/travis/miniconda/envs/test-environment/lib/python3.4/site-packages/pypet-0.1b10.dev0-py3.4.egg/pypet/environment.py", line 150, in _single_run
    traj._store_final(store_data=store_data)
  File "/home/travis/miniconda/envs/test-environment/lib/python3.4/site-packages/pypet-0.1b10.dev0-py3.4.egg/pypet/trajectory.py", line 3271, in _store_final
    store_data=store_data)
  File "/home/travis/miniconda/envs/test-environment/lib/python3.4/site-packages/pypet-0.1b10.dev0-py3.4.egg/pypet/storageservice.py", line 295, in store
    self.acquire_lock()
  File "/home/travis/miniconda/envs/test-environment/lib/python3.4/site-packages/pypet-0.1b10.dev0-py3.4.egg/pypet/storageservice.py", line 284, in acquire_lock
    self._lock.acquire()
  File "/home/travis/miniconda/envs/test-environment/lib/python3.4/multiprocessing/managers.py", line 958, in acquire
    return self._callmethod('acquire', args)
  File "/home/travis/miniconda/envs/test-environment/lib/python3.4/multiprocessing/managers.py", line 731, in _callmethod …
Run Code Online (Sandbox Code Playgroud)

python locking multiprocessing python-3.4 python-multiprocessing

5
推荐指数
0
解决办法
970
查看次数

Flask 缓存文件系统缓存是否跨进程共享?

让我们假设我将 Flask 与文件系统缓存与 uWSGI 或 gunicorn 结合使用,它们中的任何一个都启动多个进程或工作程序。所有这些进程共享同一个缓存吗?或者换个方式问,无论进程 pid、线程状态等如何,函数和参数是否总是评估为相同的缓存键?

例如,请考虑以下最小示例:

import time

from flask import Flask, jsonify
from flask_caching import Cache

app = Flask(__name__)

cache = Cache(app, config={
    'CACHE_TYPE': 'filesystem',
    'CACHE_DIR': 'my_cache_directory',
    'CACHE_DEFAULT_TIMEOUT': 3600,
})


@cache.memoize()
def compute(param):
    time.sleep(5)
    return param + 1


@app.route('/')
@app.route('/<int:param>')
def main(param=41):
    expensive = compute(param)
    return jsonify({"Hello expensive": expensive})


if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

www.example.com/41只需要5秒一次,然后(3600秒)可立即无论uWSGI的或gunicorn工人?

python caching flask uwsgi gunicorn

5
推荐指数
1
解决办法
2657
查看次数

uWSGI 和 joblib 信号量:Joblib 将在串行模式下运行

我在 Docker 容器内的 Flask 应用程序中运行 joblib,以及由 supervisord 启动的 uWSGI(从启用线程开始)。

网络服务器的启动显示以下错误:

unable to load configuration from from multiprocessing.semaphore_tracker import main;main(15)
/usr/local/lib/python3.5/dist-packages/sklearn/externals/joblib/_multiprocessing_helpers.py:38: UserWarning:

[Errno 32] Broken pipe.  joblib will operate in serial mode

Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题并使 joblib 并行运行吗?谢谢!


docker 容器中安装了以下包:

pytest==4.0.1
pytest-cov==2.6.0
flake8==3.6.0
Cython==0.29.3
numpy==1.16.1
pandas==0.24.0
scikit-learn==0.20.2
fancyimpute==0.4.2
scikit-garden==0.1.3
category_encoders==1.3.0
boto3==1.9.86
joblib==0.13.1
dash==0.37.0
dash-renderer==0.18.0
dash-core-components==0.43.1
dash-table==3.4.0
dash-html-components==0.13.5
dash-auth==1.3.2
Flask-Caching==1.4.0
plotly==3.6.1
APScheduler==3.5.3
Run Code Online (Sandbox Code Playgroud)

编辑

问题要么是由于 uWSGI、nginx 或 supervisord。缺少权限dev/shm不是问题,因为如果我直接运行 Flask 服务器,可以创建信号量。在下面找到三个服务的配置文件。免责声明,我是网络服务器新手,配置是通过从不同的博客复制和粘贴而产生的,只是为了使其工作:-D

所以这是我的 uwsgi 配置:

[uwsgi]
module = prism_dash_frontend.__main__
callable = server

uid = nginx
gid …
Run Code Online (Sandbox Code Playgroud)

python flask uwsgi docker joblib

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