小编Ram*_*hum的帖子

Python:将GUI流程与核心逻辑流程分开

我正在开发一个用于处理计算机模拟的Python项目,我也在为它开发GUI.(核心逻辑本身不需要GUI.)我使用的GUI工具包是wxPython,但我认为我的问题很普遍,不依赖于它.

GUI当前工作的方式是它garlicsim在与GUI相同的进程和相同的线程上启动核心逻辑包(被调用).这是有效的,但我理解这是一个有问题的方法,因为如果核心逻辑需要做一些硬计算,GUI将挂起,我认为这是不可接受的.

我该怎么办?

我听说过在GUI的单独进程上启动核心逻辑的选项.这听起来很有趣,但我对此有很多疑问.

  1. 我是否使用multiprocessing包或subprocess包来启动新流程?
  2. 如何从GUI过程轻松访问模拟数据?毕竟,它将存储在另一个进程中.用户应该能够轻松顺畅地浏览模拟的时间线.如何才能做到这一点?

python user-interface user-experience multiprocessing

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

查看Python函数的代码

假设我正在使用Python shell,我给了一个函数f.如何访问包含其源代码的字符串?(从shell开始,而不是手动打开代码文件.)

我希望这甚至可以用于其他函数中定义的lambda函数.

python introspection

13
推荐指数
2
解决办法
7675
查看次数

用Git创建跟踪分支的简洁方法

今天我不得不与一个名为的远程分支合作origin/}__test_syntax_error_in_simpack_settings.我想为它创建一个跟踪分支.

我不得不输入:

git branch }__test_syntax_error_in_simpack_settings origin/}__test_syntax_error_in_simpack_settings
Run Code Online (Sandbox Code Playgroud)

我没有第一个参数的自动完成,只有第二个.我不喜欢打字.有更快的方法吗?主要障碍是必须键入新的本地跟踪分支的名称.有没有办法告诉Git,"创建一个跟名称相同的跟踪分支origin/whatever?"

git bash shell

13
推荐指数
2
解决办法
9716
查看次数

按索引号获取指定度数的排列

我已经工作了几个小时,但无法弄明白.

将排列度定义为创建它时需要组合的最小转置数.所以程度(0, 1, 2, 3)为0,程度(0, 1, 3, 2)为1,程度(1, 0, 3, 2)为2,等等.

将空间Snd看作n具有度数的长度序列的所有排列的空间d.

我想要两种算法.一个在该空间中进行置换并为其分配索引号的另一个,并且另一个取一个项的索引号Snd并检索其置换.索引号显然应该是连续的(即在范围内0 to len(Snd)-1,每个排列具有不同的索引号.)

我希望这样实现O(sane); 这意味着如果你要求排列数17,算法不应该遍历0到16之间的所有排列来检索你的排列.

不知道怎么解决这个问题?

(如果你要包含代码,我更喜欢Python,谢谢.)

更新:

我想要一个解决方案

  1. 排列是根据它们的词典顺序排序的(而不是通过手动排序它们,而是通过一个有效的算法来给它们开始的词典顺序)和
  2. 我希望算法也接受不同程度的序列,所以我可以说"我希望在范围(5)的置换空间中的所有1或3或4级排列中排列数为78".(基本上函数会取一个度数元组.)这也会影响从排列计算索引的反函数; 根据度数集,指数会有所不同.

我过去两天试过解决这个问题而且我没有成功.如果你能提供Python代码,那就是最好的.

python algorithm permutation combinatorics time-complexity

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

Pytest:获取所有测试的地址

当我跑去pytest --collect-only获取我的测试列表时,我会以类似的格式获取它们<Function: test_whatever>.但是,当我pytest -k ...用来运行特定测试时,我需要以格式输入测试的"地址" foo::test_whatever.是否有可能以相同的格式-k获取所有测试的所有地址列表?

python pytest

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

Python/wxPython:在后台持续工作

我正在制作一个用Python运行模拟的程序,带有一个wxPython接口.在程序中,您可以创建模拟,程序为您渲染(=计算)它.有时渲染可能非常耗时.

当用户启动模拟并定义初始状态时,我希望程序在后台连续渲染模拟,而用户可能在程序中执行不同的操作.有点类似于填充的YouTube风格的条形图:您可以仅在渲染点进行模拟.

我该如何运行渲染功能?

python multithreading wxpython background

12
推荐指数
3
解决办法
6624
查看次数

Python:使用`lxml.html`将HTML内容注入标记

我正在使用该lxml.html库来解析HTML文档.

我所在的特定的标签,我打电话content_tag了,我想改变它的内容(即之间的文本<div></div>,)和新的内容与它的一些HTML字符串,说这是'Hello <b>world!</b>'.

我怎么做?我试过content_tag.text = 'Hello <b>world!</b>'但它然后它逃脱了所有的html标签,取而代之<&lt;等等.

我想注入文本而不转义任何HTML.我怎样才能做到这一点?

html python parsing lxml

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

Python:是否可以访问`finally`子句中的返回值?

我在try子句中有一个return语句:

def f():
    try:
        return whatever()
    finally:
        pass # How do I get what `whatever()` returned in here?
Run Code Online (Sandbox Code Playgroud)

是否有可能在finally子句中获得返回值?

这更像是一个理论问题,所以我不是在寻找一种解决方法,比如将它保存到变量中.

python finally return-value

12
推荐指数
2
解决办法
1490
查看次数

为什么Django的`urlencode`不能编码斜杠?

我看到Django的urlencode过滤器默认不编码斜杠:

https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#urlencode

我知道我可以对斜杠进行编码,但为什么不默认呢?是不是接受了对斜杠进行编码的行为,因为它是URL中的保留字符?

python django url urlencode

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

让Python在我的脚本之前运行几行

我需要运行一个脚本foo.py,但我还需要在代码之前插入一些调试行来运行foo.py.目前我只是将这些行放入其中foo.py并且我小心不要将其提交给Git,但我不喜欢这个解决方案.

我想要的是一个单独的文件bar.py,我不承诺Git.然后我想跑:

python /somewhere/bar.py /somewhere_else/foo.py
Run Code Online (Sandbox Code Playgroud)

我想要做的是首先运行一些代码行bar.py,然后运行foo.py__main__.它应该在bar.py线路运行的相同过程中,否则调试线将无济于事.

有没有办法bar.py做到这一点?

有人建议:

import imp
import sys

# Debugging code here

fp, pathname, description = imp.find_module(sys.argv[1])
imp.load_module('__main__', fp, pathname, description)
Run Code Online (Sandbox Code Playgroud)

问题是因为它使用导入机制,我需要在同一个文件夹foo.py上运行它.我不希望这样.我想简单介绍一下foo.py.

另外:解决方案也需要处理.pyc文件.

python python-import

12
推荐指数
2
解决办法
3961
查看次数