小编Jam*_*mes的帖子

无法使用Ctrl-C终止Python脚本

我正在使用以下脚本测试Python线程:

import threading

class FirstThread (threading.Thread):
    def run (self):
        while True:
            print 'first'

class SecondThread (threading.Thread):
    def run (self):
        while True:
            print 'second'

FirstThread().start()
SecondThread().start()
Run Code Online (Sandbox Code Playgroud)

这是在Kubuntu 11.10上的Python 2.7中运行的.Ctrl+ C不会杀了它.我也尝试为系统信号添加处理程序,但这没有帮助:

import signal 
import sys
def signal_handler(signal, frame):
    sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
Run Code Online (Sandbox Code Playgroud)

为了杀死进程,我在用Ctrl+ 发送程序到后台后通过PID将其杀死Z,这是不被忽略的.为什么Ctrl+ C如此坚持被忽视?我该如何解决这个问题?

python linux

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

是否有Python方式将可选功能与功能的主要用途脱钩?

语境

假设我有以下Python代码:

def example_function(numbers, n_iters):
    sum_all = 0
    for number in numbers:
        for _ in range(n_iters):
            number = halve(number)
        sum_all += number
    return sum_all


ns = [1, 3, 12]
print(example_function(ns, 3))
Run Code Online (Sandbox Code Playgroud)

example_function这里只是遍历ns列表中的每个元素,并将它们减半3次,同时累积结果。运行此脚本的输出很简单:

2.0
Run Code Online (Sandbox Code Playgroud)

由于1 /(2 ^ 3)*(1 + 3 + 12)= 2。

现在,让我们说(出于任何原因,也许是调试或日志记录),我想显示一些有关所采取的中间步骤的信息example_function。也许然后我会将此函数重写为如下所示:

def example_function(numbers, n_iters):
    sum_all = 0
    for number in numbers:
        print('Processing number', number)
        for i_iter in range(n_iters):
            number = number/2
            print(number)
        sum_all += number
        print('sum_all:', sum_all)
    return sum_all
Run Code Online (Sandbox Code Playgroud)

现在,当使用与以前相同的参数调用它时,将输出以下内容:

Processing number 1 …
Run Code Online (Sandbox Code Playgroud)

python

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

使用 pandas 中的 read_csv 时为特定列设置数据类型

我有一个大的 csv 文件(~10GB),大约有 4000 列。我知道我期望的大部分数据是 int8,所以我设置:

pandas.read_csv('file.dat', sep=',', engine='c', header=None, 
                na_filter=False, dtype=np.int8, low_memory=False)
Run Code Online (Sandbox Code Playgroud)

问题是,最后一列(第 4000 个位置)是 int32,我可以告诉 read_csv 默认使用 int8,在第 4000 列使用 int 32 吗?

谢谢

python pandas

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

Nexus 存储库上的 conda 包

我的公司使用 Nexus 存储库作为 npm 代理来进行包管理。有人有使用 Nexus 保存 Conda 包(Python)和代理的经验吗?

在Nexus文档中,明确表示Nexus支持PyPI存储库,但它是否也支持Conda存储库?

python pip nexus pypi conda

8
推荐指数
1
解决办法
4364
查看次数

我在哪里放一个conda-recipe相对于我的项目?

我创建了一个python项目,我想用conda构建但是当我cd到conda-recipe文件夹并运行conda build .找不到setup.py文件时我收到错误.我已经尝试将conda-recipe移动到与setup.py相同的级别并将source部分添加到我的meta.yaml但是我仍然收到错误.将conda-recipe相对于我的python包放在哪里的最佳位置?

这是我的项目结构:

- MyProject/
  |- conda-recipe/
    |- bld.bat
    |- build.sh
    |- meta.yaml
  |- code/
    |- subpackage/
      |- __init__.py
      |- foo.py
  |- tests/
    |- test_foo.py
  |-setup.py
Run Code Online (Sandbox Code Playgroud)

这是我的bld.bat的内容:

"%PYTHON%" setup.py sdist install
if errorlevel 1 exit 1
Run Code Online (Sandbox Code Playgroud)

而build.sh:

#!/bin/bash

$PYTHON setup.py sdist install     
Run Code Online (Sandbox Code Playgroud)

和meta.yaml:

package:
  name: myproject
  version: "1.0.0" 

source:
  path: ../code

requirements:
  build:
    - python
    - setuptools

  run:
    - python
    - argparse
Run Code Online (Sandbox Code Playgroud)

为了完整性,这里是错误:

(C:\Anaconda2\conda-bld\myproject_1492545717354\_b_env) 
  C:\Anaconda2\conda-bld\myproject_1492545717354\work>
  "C:\Anaconda2\conda-bld\myproject_1492545717354\_b_env\python.exe" setup.py 
  sdist install C:\Anaconda2\conda-bld\myproject_1492545717354\_b_env\python.exe: 
  can't open file 'setup.py': [Errno 2] No …
Run Code Online (Sandbox Code Playgroud)

python anaconda conda

8
推荐指数
1
解决办法
1251
查看次数

在 __init__ 中更改时,python 类变量可以成为实例变量吗?

据我了解,这里var是一个类变量

class MyClass:
    var = 'hello'

    def __init__(self):
        print(self.var)
Run Code Online (Sandbox Code Playgroud)

那是一个实例变量

class MyClass:

    def __init__(self, var):
        self.var = var
        print(self.var)
Run Code Online (Sandbox Code Playgroud)

我遇到了问题,我正在寻找一种方法来使实例变量的类型提示成为可能。我当然可以使用类型提示参数,def __init__(self, var: str):但这不会影响实例变量本身。

然后我注意到在一些描述中(如这里),他们使用术语实例变量来表示var这样的:

class MyClass:
    var : str = 'hello'

    def __init__(self, var : str = None):
        self.var = var if var
        print(self.var)
Run Code Online (Sandbox Code Playgroud)

这确实是解决方案,但这仍然是一个实例变量吗?因为它是在类体中定义的,所以在我的理解中它将是一个类变量。如果您要为 var 使用列表,则对该列表变量的所有更改都将通过实例共享。

但在这种情况下不会有问题,因为字符串被替换并且不会被其他实例共享。但是,如果您将其称为实例变量,对我来说似乎是错误的,而我不知道是否应该像这样使用它只是为了让类型提示起作用。

python type-hinting

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

dask:指定进程数

我正在尝试使用 dask 进行一些令人尴尬的并行处理。出于某种原因,我必须使用 dask,但使用multiprocessing.Pool(5).map.

例如:

import dask
from dask import compute, delayed

def do_something(x): return x * x

data = range(10)
delayed_values = [delayed(do_something)(x) for x in data]
results = compute(*delayed_values, scheduler='processes')
Run Code Online (Sandbox Code Playgroud)

它有效,但显然它只使用一个过程。

如何配置 dask 以便它使用 5 个进程池进行此计算?

python dask

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

替换列表中的字符串(使用 re.sub)

我正在尝试替换文件列表中的部分文件扩展名。我希望能够遍历项目(文件),并删除扩展名。当 re.sub 作为第三个参数需要一个字符串时,我不知道如何适当地循环遍历列表中的项目。例如。re.sub(模式,repl,字符串,计数= 0,标志= 0)

import re

file_lst = ['cats1.fa', 'cats2.fa', 'dog1.fa', 'dog2.fa']
file_lst_trimmed =[]

for file in file_lst:
    file_lst_trimmed = re.sub(r'1.fa', '', file)
Run Code Online (Sandbox Code Playgroud)

这里出现的问题是 re.sub 需要一个字符串,我希望它遍历字符串列表。

感谢您的任何建议!

python

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

在深色主题笔记本上绘制熊猫的色轴标签

我正在使用 Jupyter Lab 使用 Pandas 绘图来绘制一些数据,如下所示:

df.plot()
Run Code Online (Sandbox Code Playgroud)

问题是,虽然绘图区域是白色的,但轴标签是黑色的,这在深色 jupyter 实验室主题下很难看到。有没有办法使整个情节背景变白,以便我可以看到标签。我在下面放了一个示例图片。

在此处输入图片说明

python pandas

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

从 DeepDiff 结果构建 python dict

我有一个 DeepDiff 结果,它是通过比较两个 JSON 文件获得的。我必须从 deepdiff 结果构建一个 python 字典,如下所示。

json1 = {"spark": {"ttl":3, "poll":34}}
json2 = {"spark": {"ttl":3, "poll":34, "toll":23}, "cion": 34}

deepdiffresult = {'dictionary_item_added': {"root['spark']['toll']", "root['cion']"}}

expecteddict = {"spark" : {"toll":23}, "cion":34}
Run Code Online (Sandbox Code Playgroud)

如何做到这一点?

python dictionary deep-diff

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

标签 统计

python ×10

conda ×2

pandas ×2

anaconda ×1

dask ×1

deep-diff ×1

dictionary ×1

linux ×1

nexus ×1

pip ×1

pypi ×1

type-hinting ×1