我想我错过了关于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) 当我在 a和viathreading._wait_for_tstate_lock之间传输大量数据时,会引发异常。ProcessThreadmultiprocessing.Queue
我的最小工作示例首先看起来有点复杂 - 抱歉。我会解释。原始应用程序将大量(不那么重要)文件加载到 RAM 中。这是在单独的进程中完成的,以节省资源。主 GUI 线程不应冻结。
GUI 启动一个单独的进程Thread以防止 gui 事件循环冻结。
Thread然后,这个单独的任务将启动一个Process应该完成工作的任务。
a) 这Thread实例化了 a multiprocess.Queue(注意这是 amultiprocessing而不是threading!)
b) 这是为了从回Process共享数据。ProcessThread
做Process了一些工作(3 个步骤)并将.put()结果放入multiprocessing.Queue.
当Process结束时Thread,再次接管并收集来自的数据Queue,将其存储到自己的属性中MyThread.result。
告诉ThreadGUI 主循环/线程在有时间的情况下调用回调函数。
回调函数 ( MyWindow::callback_thread_finished()) 从 中获取结果MyWindow.thread.result。
问题是,如果放入的数据Queue发生了很大的事情,我不明白 -MyThread永远不会结束。我必须通过 Strg+C 取消该应用程序。
我从文档中得到了一些提示。但我的问题是我没有完全理解文档。但我有一种感觉,我的问题的关键就在那里。 …
python queue python-multithreading python-3.x python-multiprocessing
我正在尝试在我的Gtk应用程序中转换菜单栏,因此它将使用GActions(来自Gio)而不是GtkActions使用GObject Instrospection的Python3.
我一直试图自己解决这个问题,但到目前为止看起来非常复杂,我没有太多运气.
如果有人可以请发布一个如何创建GAction基于的简单菜单的示例
这对我很有帮助.
编辑:这是我现在在窗口中的菜单栏:

如果有人可以复制使用GioActions显示的菜单项,那么我就可以弄清楚它们是如何工作的,这样会很棒.
顺便说一下,我使用窗口回调的所有操作都不是app回调,所以这是一个窗口菜单栏而不是app菜单栏.
这个问题与这个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) (我想)我知道如何从管道中读取.我的意思是像这样打电话给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)
没有任何反应,因为它等待输入.
所以我想检查(在启动脚本时)是否有来自管道的输入.但我不知道为什么size或len没有工作sys.stdin或sys.stdin.buffer.
也许在处理Python的第2版和第3版之间存在差异?
我正在尝试使用一个程序从数据库中检索记录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)
我知道很多次问过如何复制或复制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) 我想asyncio与tkinterGUI 结合使用.我是新手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) 我有一个带有进度条的 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) 我想在使用时包含默认情况下不会发生的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)