为了简化Ipython的调试,我在脚本的开头添加了以下内容
from IPython.Debugger import Tracer
debug = Tracer()
Run Code Online (Sandbox Code Playgroud)
但是,如果我从命令行启动我的脚本
$ python myscript.py
Run Code Online (Sandbox Code Playgroud)
我收到了与Ipython相关的错误.有没有办法做到以下几点
if run_from_ipython():
from IPython.Debugger import Tracer
debug = Tracer()
Run Code Online (Sandbox Code Playgroud)
这样我只需要在需要时导入Tracer()函数.
我通常会从模拟中获得一些数据,我希望以表格的形式包含在演示文稿中.通常我使用Open(Libre)-Office Impress进行演示.然后我从我的结果复制粘贴到Impress表.我发现这有点乏味.既然我已经在Python中得到了结果,有什么方法可以从这些数据中自动生成.pdf或.eps表,以便我可以快速将.pdf或.eps导入Impress?
我正在通过Linux上的Python子进程模块运行Perl脚本.使用变量输入多次调用运行脚本的函数.
def script_runner(variable_input):
out_file = open('out_' + variable_input, 'wt')
error_file = open('error_' + variable_input, 'wt')
process = subprocess.Popen(['perl', 'script', 'options'], shell=False,
stdout=out_file, stderr=error_file)
Run Code Online (Sandbox Code Playgroud)
但是,如果我运行此函数,例如两次,则第二个进程启动时第一个进程的执行将停止.我可以通过添加来获得我想要的行为
process.wait()
Run Code Online (Sandbox Code Playgroud)
在调用脚本之后,所以我并没有真正陷入困境.但是,我想找出为什么我不能使用子进程多次运行脚本,并让脚本并行进行这些计算,而不必等待它在每次运行之间完成.
UPDATE
罪魁祸首并不那么令人兴奋:perl脚本使用了为每次执行重写的公共文件.
但是,我从中学到的教训是,垃圾收集器在开始运行后不会删除该进程,因为一旦我将其整理出来,这对我的脚本没有任何影响.
可能重复:
git中的分支描述
有时我发现很难记住我为什么要建立一个新的Git分支.有什么办法可以为分支添加描述吗?我当然可以在我第一次提交到分支时添加这些信息,但是能够做到这样的事情会很好:
git checkout -b -m"Branch for that really good idea" mybranch
Run Code Online (Sandbox Code Playgroud)
然后做一些其他的工作,完全忘记我的想法,因为我能做到
git checkout -descr mybranch<Enter>
Output: Your description: "Branch for that really good idea"
Run Code Online (Sandbox Code Playgroud)
我知道git-notes,但它被用来为提交添加信息,所以它并不是我正在寻找的.
我需要阅读千兆字节的文本,所以我正在尝试优化我的代码.这样做时,我发现,对于我的问题,使用字典比if-tests更快.
check = {'R':'-', 'F':'+'}
seqs = ['R', 'F']*100
def check1():
for entry in seqs:
if entry == 'R':
strand = '-'
if entry == 'F':
strand = '+'
def check2():
for entry in seqs:
strand = check[entry]
Run Code Online (Sandbox Code Playgroud)
使用ipythong的%timeit我发现在字典中查找的速度比使用两个if-tests快两倍:
In [63]: %timeit check1()
10000 loops, best of 3: 38.8 us per loop
In [64]: %timeit check2()
100000 loops, best of 3: 16.2 us per loop
Run Code Online (Sandbox Code Playgroud)
由于if-tests是如此基本,我没想到性能差异.这是众所周知的吗?任何人都可以解释为什么会这样吗?
UPDATE
我检查了上面的两个函数以及下面的check3()如何影响我的实际代码的运行时间,并且对总时间没有影响.因此,在现实世界的例子中,要么字典中的提升不是很高,其中"R"和"F"值需要不断地从文件中重新读取,或者这段代码不是我的瓶颈的一部分.
无论如何,谢谢你的答案!
python ×4
branch ×1
dictionary ×1
git ×1
ipython ×1
pdf ×1
performance ×1
presentation ×1
subprocess ×1