小编CoM*_*tel的帖子

在类instanciation上导入

我正在创建一个包含多个类的模块.我的问题是这些类中的一些需要导入需要手动编译或需要特定硬件才能工作的非常具体的模块.

没有兴趣预先导入每个特定模块,并且由于某些模块需要特定的硬件才能工作,它甚至可能引发错误.

我想知道是否有可能只在需要时导入这些模块,即实例化一个精确的类,如下所示:

class SpecificClassThatNeedRandomModule(object):
    import randomModule
Run Code Online (Sandbox Code Playgroud)

此外,我不确定这将是一个很好的pythonic方式来做这个技巧,所以我愿意建议一个正确的方法.

python python-2.7

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

Matplotlib与多处理冻结计算机

我有matplotlib和多处理的问题.我启动了第一个过程,我在其中显示图像并选择一个区域,然后关闭图形.然后我启动另一个进程,在那里我调用一个定期更新的图形函数.在这一点上,eveything工作正常.然后,当我尝试使用SAME图形函数启动另一个进程时,它会冻结我的整个计算机,但后台进程仍然工作...我只有其中一个错误(它并不总是相同):

错误1:

XIO:X服务器上的致命IO错误25(设备不适当的ioctl)"4438请求(4438已知已处理)后剩余30个事件":0.0".XIO:X43服务器上的致命IO错误11(资源暂时不可用)在4443个请求(4443已知已处理)之后":0.0",剩余31个事件.[xcb]处理队列时的未知序列号[xcb]很可能这是一个多线程客户端,并且没有调用XInitThreads [xcb]正在中止,对不起.python:../../ src/xcb_io.c:274:poll_for_event:断言`!xcb_xlib_threads_sequence_lost'失败.

错误2:

X请求失败的错误:BadIDChoice(为此连接选择的资源ID无效)失败请求的主要操作码:53(X_CreatePixmap)失败请求中的资源ID:0x5600299失败请求的序列号:4793输出流中的当前序列号:4795 XIO:在4788个请求(4788已知已处理)之后,X服务器上的致命IO错误25(设备上不适当的ioctl)":0.0",剩余31个事件.XIO:X93服务器上的致命IO错误25(设备不适当的ioctl)"4793请求(4793已知已处理)之后":0.0",剩余32个事件.

奇怪的是,我可以完全启动几个进程调用图形函数而没有任何问题,它是与第一个图形的耦合,使其不稳定.

在尝试调试时,我发现一个简单fig=plt.figure()就足以使一切崩溃:事实上,任何调用plt......

我在这里和那里读到你可以强制matplotlib使用agg后端,它有助于多进程,但有些小部件不能用它,所以我想避免这种情况.

我真的不明白为什么matplotlib在不同的进程中使用可能会导致问题,所以如果有人能够解释原因和/或帮助我解决问题,那将是非常好的.

python matplotlib multiprocessing python-2.7

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

毫秒精确的python计时器

我正在研究旨在同时控制多个执行器的python脚本。为简化起见,假设我需要控制2个电动机。

使用多处理模块,我为每个电动机创建了一个过程,并创建了一个将数据保存在图纸上的过程。

脚本的这一部分工作正常,但是我需要在精确的时间(每毫秒)下命令电动机,并且time.time()或time.clock()函数似乎不可靠(触发范围为0.05到30毫秒!)

这些功能如此不稳定是“正常”的,还是由脚本的另一部分引起的?

编辑:我使用datetime函数(请参见下文)来提高精度,但是我仍然有几个离散的错误级别。例如,如果我想要1ms,我也得到1.25、0.75、1.5 ...因此IMO这是由于计算机硬件(如Serge Ballesta所说)。

python timer

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

Python实时绘图

我在两个数组中获取了一些数据:一个用于时间,一个用于值.当我达到1000点时,我触发一个信号并绘制这些点(x =时间,y =值).

我需要在前面的图中保持相同的数字,但只是一个合理的数字,以避免减慢过程.例如,我想在我的图表上保留10,000点.matplotlib交互式绘图工作正常,但我不知道如何擦除第一个点,它会很快地减慢我的计算机速度.我查看了matplotlib.animation,但它似乎只是重复相同的情节,并没有真正实现它.

我真的在寻找一个轻松的解决方案,以避免任何减速.

由于我获取了很长时间,我在每个循环上擦除输入数据(第1001点存储在第1行,依此类推).

这是我现在所拥有的,但它保留了图表上的所有点:

import matplotlib.pyplot as plt

def init_plot():
  plt.ion()
  plt.figure()
  plt.title("Test d\'acqusition", fontsize=20)
  plt.xlabel("Temps(s)", fontsize=20)
  plt.ylabel("Tension (V)", fontsize=20)
  plt.grid(True)

def continuous_plot(x, fx, x2, fx2):
  plt.plot(x, fx, 'bo', markersize=1)
  plt.plot(x2, fx2, 'ro', markersize=1)
  plt.draw()
Run Code Online (Sandbox Code Playgroud)

我将init函数调用一次,并且continous_plot处于一个进程中,每当我在数组中有1000个点时调用它.

python plot real-time

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

将pandas字符串列与缺少的值组合在一起

我需要在pandas数据帧的2列或更多列中连接字符串.

我找到了这个答案,如果你没有任何缺失值,它可以正常工作.不幸的是,我有,这导致像"ValueA; None"这样的东西,这不是很干净.

示例数据:

col_A  | col_B
------ | ------
val_A  | val_B 
None   | val_B 
val_A  | None 
None   | None
Run Code Online (Sandbox Code Playgroud)

我需要这个结果:

col_merge
---------
val_A;val_B
val_B
val_A
None
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Flask request.get_json()引发BadRequest

我有一个带有此端点的Flask API:

@app.route('/classify/', methods=['POST'])
def classify():
    data = request.get_json()
Run Code Online (Sandbox Code Playgroud)

当我使用python发布请求时,eveything很好.

但是当我使用Postman时,我得到:

<class 'werkzeug.exceptions.BadRequest'> : 400: Bad Request
Run Code Online (Sandbox Code Playgroud)

我同时发送相同的Json(我复制/粘贴它以确保).我是相当有信心的问题是由我的JSON一些"\ t"的,这是由蟒蛇,但不是邮差逃脱引起的.

有没有办法检索原始json,并在应用程序中处理它(逃避需要转义的东西)?还是另一种获得json的方式?

编辑:这是一个与你建议重复的问题不同的问题,因为你的建议使用get_json,这就是我的问题.

python json flask

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

请求返回部分页面

我正在尝试解析用户滚动时加载的网站数据.滚动时可以显示有限数量的元素,但使用此元素只会给出第一部分(112个中的25个):

url = "http://url/to/website"
response = requests.get(url)
soup = BeautifulSoup(response.text)
Run Code Online (Sandbox Code Playgroud)

如何request在返回html之前告诉"滚动"?

编辑:显然请求不要那样做,我可以在Python中使用什么解决方案?

python beautifulsoup python-requests

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

保存为 csv 损坏数据帧

我有一个形状为 (455698, 62) 的熊猫数据框。我想将它保存为一个 csv 文件,稍后再用 Pandas 加载它。现在我这样做:

df.to_csv("/path/to/file.csv",index=False,sep="\\", encoding='utf-8') #saving
df=pd.read_csv("/path/to/file.csv",delimiter="\\",encoding ='utf-8') #loading
Run Code Online (Sandbox Code Playgroud)

我得到一个形状为 (455700, 62) 的数据框:还有 2 行?当我详细检查时(查看每列中的所有唯一值),我发现某些值在此过程中更改了列。

我尝试了多个分隔符,强制使用 dtype ="object",但我无法弄清楚错误在哪里。我应该尝试什么?

python csv pandas

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