小编buh*_*htz的帖子

R的数据集mtcars中的第一列是什么?

我想我错过了关于R数据帧的基本概念.

head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2 …
Run Code Online (Sandbox Code Playgroud)

r dataframe rowname

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

具有大量数据的 Multiprocessing.Queue 会导致 _wait_for_tstate_lock

当我在 a和viathreading._wait_for_tstate_lock之间传输大量数据时,会引发异常。ProcessThreadmultiprocessing.Queue

我的最小工作示例首先看起来有点复杂 - 抱歉。我会解释。原始应用程序将大量(不那么重要)文件加载到 RAM 中。这是在单独的进程中完成的,以节省资源。主 GUI 线程不应冻结。

  1. GUI 启动一个单独的进程Thread以防止 gui 事件循环冻结。

  2. Thread然后,这个单独的任务将启动一个Process应该完成工作的任务。

a) 这Thread实例化了 a multiprocess.Queue(注意这是 amultiprocessing而不是threading!)

b) 这是为了从回Process共享数据。ProcessThread

  1. Process了一些工作(3 个步骤)并将.put()结果放入multiprocessing.Queue.

  2. Process结束时Thread,再次接管并收集来自的数据Queue,将其存储到自己的属性中MyThread.result

  3. 告诉ThreadGUI 主循环/线程在有时间的情况下调用回调函数。

  4. 回调函数 ( MyWindow::callback_thread_finished()) 从 中获取结果MyWindow.thread.result

问题是,如果放入的数据Queue发生了很大的事情,我不明白 -MyThread永远不会结束。我必须通过 Strg+C 取消该应用程序。

我从文档中得到了一些提示。但我的问题是我没有完全理解文档。但我有一种感觉,我的问题的关键就在那里。 …

python queue python-multithreading python-3.x python-multiprocessing

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

如何使用PyGI GTK中的GIO操作创建完整的菜单?

我正在尝试在我的Gtk应用程序中转换菜单栏,因此它将使用GActions(来自Gio)而不是GtkActions使用GObject Instrospection的Python3.

我一直试图自己解决这个问题,但到目前为止看起来非常复杂,我没有太多运气.

如果有人可以请发布一个如何创建GAction基于的简单菜单的示例

  • 一个子菜单
  • 带有库存ID图标/热键的菜单项
  • 带有非库存图标/热键的菜单项
  • 已检查的菜单项
  • 和收音机菜单项目组
  • 禁用(灰显)菜单项

这对我很有帮助.

编辑:这是我现在在窗口中的菜单栏:

在此输入图像描述

如果有人可以复制使用GioActions显示的菜单项,那么我就可以弄清楚它们是如何工作的,这样会很棒.

顺便说一下,我使用窗口回调的所有操作都不是app回调,所以这是一个窗口菜单栏而不是app菜单栏.

python gtk pygobject python-3.x gtk3

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

未知的PCM cards.pcm.rear(pyaudio)

这个问题与这个pydub-Issue有关.他们告诉我错误信息与pyaudio有关.

#!/usr/bin/env python3

import pydub, pydub.playback

wav = pydub.AudioSegment.from_wav('/home/user/complete.wav')
pydub.playback.play(wav)
Run Code Online (Sandbox Code Playgroud)

这段代码引发了我不理解的错误.

ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot …
Run Code Online (Sandbox Code Playgroud)

pyaudio python-3.x

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

找出Python中是否有来自管道的输入?

(我想)我知道如何从管道中读取.我的意思是像这样打电话给bash

echo Bähm | ./script.py
Run Code Online (Sandbox Code Playgroud)

这个Python3脚本适用于此.

#!/usr/bin/env python3
import sys

x = sys.stdin.read()

if x:
    print(x)
else:
    print('no pipe')

sys.exit()
Run Code Online (Sandbox Code Playgroud)

但是当我在bash上做这件事的时候

./script.py
Run Code Online (Sandbox Code Playgroud)

没有任何反应,因为它等待输入.

所以我想检查(在启动脚本时)是否有来自管道的输入.但我不知道为什么sizelen没有工作sys.stdinsys.stdin.buffer.

也许在处理Python的第2版和第3版之间存在差异?

python pipe python-3.x

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

删除Treeview对象的空第一列

我正在尝试使用一个程序从数据库中检索记录sqlite3,然后使用a显示它们Treeview.

我成功地创建了一个包含记录的表,但我无法删除第一个空列.

def executethiscommand(search_str):
    comm.execute(search_str)
    records = comm.fetchall()
    rows = records.__len__()
    columns = records[0].__len__()

    win = Toplevel()
    list_columns = [columnames[0] for columnames in comm.description]
    tree = ttk.Treeview(win)
    tree['columns'] = list_columns

    for column in list_columns:
        tree.column(column, width=70)
        tree.heading(column, text=column.capitalize())

    for record in records:
        tree.insert("", 0, text="", values=record)

    tree.pack(side=TOP, fill=X)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python treeview tkinter ttk

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

如何使用make_transient()复制SQLAlchemy映射对象?

我知道很多次问过如何复制或复制SQLAlchemy映射对象的问题.答案总是取决于需求或如何解释"复制"或"复制".这是问题的专门版本,因为我得到了提示make_transient().

但我有一些问题.我真的不知道如何处理主键(PK).在我的用例中,PK总是由SQLA(或后台的DB)自动生成.但是,对于新的重复对象,这不会发生.

代码有点伪.

import sqlalchemy as sa
from sqlalchemy.orm.session import make_transient

_engine = sa.create_engine('postgres://...')
_session = sao.sessionmaker(bind=_engine)()


class MachineData(_Base):
    __tablename__ = 'Machine'    
    _oid = sa.Column('oid', sa.Integer, primary_key=True)


class TUnitData(_Base):
    __tablename__ = 'TUnit'
    _oid = sa.Column('oid', sa.Integer, primary_key=True)
    _machine_fk = sa.Column('machine', sa.Integer, sa.ForeignKey('Machine.oid'))
    _machine = sao.relationship("MachineData")

    def __str__(self):
        return '{}.{}: oid={}(hasIdentity={}) machine={}(fk={})' \
        .format(type(self), id(self),
                self._oid, has_identity(self),
                self._machine, self._machine_fk)


if __name__ == '__main__':
    # any query resulting in one persistent object
    obj = GetOneMachineDataFromDatabase()

    # there is a valid …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

一起使用asyncio和Tkinter而不冻结GUI

我想asynciotkinterGUI 结合使用.我是新手asyncio,我对它的理解不是很详细.单击第一个按钮时,此示例启动10个任务.任务只是模拟工作sleep()几秒钟.

Python的示例代码运行良好3.6.4rc1.但问题是GUI被冻结了.当我按下第一个按钮并启动10个asyncio任务时,我无法按下GUI中的第二个按钮,直到完成所有任务.GUI永远不应该冻结 - 这是我的目标.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from tkinter import *
from tkinter import messagebox
import asyncio
import random

def do_freezed():
    """ Button-Event-Handler to see if a button on GUI works. """
    messagebox.showinfo(message='Tkinter is reacting.')

def do_tasks():
    """ Button-Event-Handler starting the asyncio part. """
    loop = asyncio.get_event_loop()
    try:
        loop.run_until_complete(do_urls())
    finally:
        loop.close()

async def one_url(url):
    """ One task. """
    sec = random.randint(1, 15)
    await …
Run Code Online (Sandbox Code Playgroud)

python user-interface asynchronous tkinter python-asyncio

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

从另一个线程或进程更新 Gtk.ProgressBar

我有一个带有进度条的 GUI。它应该显示第二个线程所做的工作的进度。我希望有一个事件,线程可以在工作的每一步立即发送到 GUI 进度条。但我不明白这是如何做到的。

Python 本身提供了一个Event用于线程情况的类。但由于方法的原因,它会阻塞 GUI 主线程Event.wait()

如果第二个线程是一个进程,它会如何改变情况和可能的解决方案?

我这里的示例基于 PyGObject (Pythons Gtk),但也与所有其他 GUI 库相关。当前的解决方案有效,但在我看来,这只是一种解决方法。GUI(作为主线程)和第二个(工作线程)线程通过 threadsafe 共享数据queue.Queue。GUI 线程中有一个计时器事件,以**固定间隔*检查 qeueu 中是否有来自线程的新数据,并更新进度条。

#!/usr/bin/env python3
import time
import threading
import queue
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib


class MyThread(threading.Thread):
    def __init__(self, queue, n_tasks):
        threading.Thread.__init__(self)
        self._queue = queue
        self._max = n_tasks

    def run(self):
        for i in range(self._max):
            # simulate a task 
            time.sleep(1)
            # put something in the data queue
            self._queue.put(1)


class MyWindow(Gtk.Window):
    def __init__(self, n_tasks): …
Run Code Online (Sandbox Code Playgroud)

python gtk multithreading pygobject

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

Pandas 忽略 dropna=False 和 groupby() 中的分类列

我想在使用时包含默认情况下不会发生的NA值。groupby()我认为这个选项dropna=False让它发生。但当列是类型时,Categorical该选项不起作用。

我认为最好的人会说这背后有一个深思熟虑的设计决策。或者可能与我不完全理解的pandas bug有关?

我这里使用的 pandas 版本是1.2.5.

#!/usr/bin/env python3
import pandas as pd

print(pd.__version__)  # 1.2.5

# initial data
df = pd.DataFrame(
    {
        '2019': [1, pd.NA, 0],
        'N': [2, 0, 7],
    }
)
print(df)

## groupby()'s working as expected

# without NA
res = df.groupby('2019').size()
print(f'\n{res}')

# include NA
res = df.groupby('2019', dropna=False).size()
print(f'\n{res}')

## now the problems
## convert to Category
df['2019'] = df['2019'].astype('category')

# PROBLEM: NA is …
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

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