小编Chi*_*chi的帖子

为什么JVM没有缓存JIT编译代码?

Sun的规范JVM实现将一些非常复杂的优化应用于字节码,以便在代码运行几次后获得接近本机的执行速度.

问题是,为什么这个编译的代码没有缓存到磁盘上以便在后续使用同一个函数/类时使用?

就目前而言,每次执行程序时,JIT编译器都会重新启动,而不是使用预编译版本的代码.当字节码基本上被解释时,不会添加此功能会大大增加程序的初始运行时间吗?

java jit caching jvm compilation

106
推荐指数
4
解决办法
9611
查看次数

为正则表达式编写解析器

即使经过多年的编程,我也很惭愧地说我从未真正完全掌握正则表达式.一般来说,当一个问题需要一个正则表达式时,我通常(在一堆引用语法之后)得出一个合适的一个,但这是一种我发现自己经常使用的技术.

所以,为了自学并正确地理解正则表达式,我决定在尝试学习时做我一直做的事情; 也就是说,一旦我觉得我已经学到了足够多的东西,就试着写一些我可能会放弃的野心勃勃的东西.

为此,我想在Python中编写一个正则表达式解析器.在这种情况下,"学习足够"意味着我想实现一个可以完全理解Perl的扩展正则表达式语法的解析器.但是,它不一定是最有效的解析器,甚至不一定在现实世界中可用.它只需要正确匹配或不匹配字符串中的模式.

问题是,我从哪里开始?我几乎不知道如何解析和解释正则表达式,除了它以某种方式涉及有限状态自动机这一事实.如何处理这个相当艰巨的问题的任何建议将非常感激.

编辑:我应该澄清一下,当我要在Python中实现正则表达式解析器时,我并不过分讨论编写示例或文章的编程语言.只要它不在Brainfuck中,我可能会理解这让它值得我这么做.

python regex parsing

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

C语言中的面向对象编程

可能重复:
你能用C编写面向对象的代码吗?
C中的面向对象模式?

我记得刚才读到有人(我认为是Linus Torvalds)谈论C++是一种可怕的语言,以及如何用C编写面向对象的程序.在有时间反思的时候,我真的不知道如何所有面向对象的概念都延续到了C.有些事情是相当明显的.例如:

  1. 要模拟成员函数,可以将函数指针放在结构中.
  2. 要模拟多态性,你可以编写一个函数,它接受可变数量的参数并根据sizeof参数(例如参数)执行一些voodoo

你会如何模仿封装和继承?

我想通过使用存储私有成员的嵌套结构可以模拟封装.它可以相当容易地出现,但也许可以被命名PRIVATE或者同样明显的东西,以表明它不应该从结构外部使用.那继承怎么样?

c oop

54
推荐指数
5
解决办法
3万
查看次数

将Linux上的Python脚本交叉编译为Windows可执行文件

我有一个Python脚本,我想编译成Windows可执行文件.现在,py2exe从Windows工作正常,但我希望能够从Linux运行它.我的是Windows我的开发机器上,但Linux是我的主要开发平台,我得到一种重新启动进入Windows刚刚创建的生病的.exe.我也不想购买第二个Windows许可证以在VirtualBox等虚拟机中运行.有任何想法吗?

PS:我知道py2exe没有完全编译python文件,就像使用Python解释器打包脚本一样.但无论哪种方式,结果都是您不需要安装Python来运行脚本.

python linux windows py2exe cross-compiling

53
推荐指数
3
解决办法
6万
查看次数

告诉Python是否处于交互模式

在Python脚本中,有没有办法判断解释器是否处于交互模式?这将非常有用,例如,当您运行交互式Python会话并导入模块时,会执行稍微不同的代码(例如,关闭日志记录).

我已经看过python是否处于-i模式并尝试了那里的代码,但是,如果使用-i标志调用Python,则该函数仅返回true,而当用于调用交互模式的命令python没有参数时.

我的意思是这样的:

if __name__=="__main__":
    #do stuff
elif __pythonIsInteractive__:
    #do other stuff
else:
    exit()
Run Code Online (Sandbox Code Playgroud)

python interactive python-2.x python-2.5

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

向Vim添加命令

我终于决定试用Vim,因为我越来越感到GUI编辑的沮丧.到目前为止,我很喜欢它,但我找不到任何有关我正在解决的问题的帮助......

我正在尝试使用命令将命令映射:Pyrun:!python %Vim cmap.如果输入,映射会显示正常:cmap.但是,在键入时:Pyrun,我收到此错误消息:

不是编辑命令:Pyrun.

这是我正在尝试的.vimrc:

:autocmd FileType python :cmap Pyrun<cr> !python %<cr>
:autocmd FileType python :cmap Intpyrun<cr> !python -i %<cr>
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?

vim

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

迭代过程中Python字典的顺序是否得到保证?

我目前正在使用SciPy.integrate.ode在Python中实现复杂的微生物食品网.我需要能够轻松地将物种和反应添加到系统中,所以我必须编写一些非常通用的代码.我的方案看起来像这样:

class Reaction(object):
    def __init__(self):
        #stuff common to all reactions
    def __getReactionRate(self, **kwargs):
        raise NotImplementedError

... Reaction subclasses that 
... implement specific types of reactions


class Species(object):
    def __init__(self, reactionsDict):
        self.reactionsDict = reactionsDict
        #reactionsDict looks like {'ReactionName':reactionObject, ...}
        #stuff common to all species

    def sumOverAllReactionsForThisSpecies(self, **kwargs):
        #loop over all the reactions and return the 
        #cumulative change in the concentrations of all solutes

...Species subclasses where for each species
... are defined and passed to the superclass constructor

class …
Run Code Online (Sandbox Code Playgroud)

python dictionary numpy scientific-computing scipy

34
推荐指数
6
解决办法
2万
查看次数

在绘制循环时,Matplotlib内存不足

我有一个相当简单的绘图程序,看起来像这样:

from __future__ import division
import datetime
import matplotlib
matplotlib.use('Agg')
from matplotlib.pyplot import figure, plot, show, legend, close, savefig, rcParams
import numpy
from globalconstants import *

    def plotColumns(columnNumbers, t, out, showFig=False, filenamePrefix=None, saveFig=True, saveThumb=True):
        lineProps = ['b', 'r', 'g', 'c', 'm', 'y', 'k', 'b--', 'r--', 'g--', 'c--', 'm--', 'y--', 'k--', 'g--', 'b.-', 'r.-', 'g.-', 'c.-', 'm.-', 'y.-', 'k.-']

        rcParams['figure.figsize'] = (13,11)
        for i in columnNumbers:
            plot(t, out[:,i], lineProps[i])

        legendStrings = list(numpy.zeros(NUMCOMPONENTS)) 
        legendStrings[GLUCOSE] = 'GLUCOSE'
        legendStrings[CELLULOSE] = 'CELLULOSE'
        legendStrings[STARCH] = 'STARCH' …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

25
推荐指数
3
解决办法
4万
查看次数

使用Python集成僵硬的ODE

I'm looking for a good library that will integrate stiff ODEs in Python. The issue is, scipy's odeint gives me good solutions sometimes, but the slightest change in the initial conditions causes it to fall down and give up. The same problem is solved quite happily by MATLAB's stiff solvers (ode15s and ode23s), but I can't use it (even from Python, because none of the Python bindings for the MATLAB C API implement callbacks, and I need to pass …

python scipy pygsl

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

解决芹菜和django的圆形进口

我有一个Django应用程序,使用Celery来卸载一些任务.主要是,它推迟了数据库表中某些字段的计算.

所以,我有一个tasks.py:

from models import MyModel
from celery import shared_task

@shared_task
def my_task(id):
    qs = MyModel.objects.filter(some_field=id)
    for record in qs:
        my_value = #do some computations
        record.my_field = my_value
        record.save()
Run Code Online (Sandbox Code Playgroud)

在models.py中

 from django.db import models
 from tasks import my_task

 class MyModel(models.Model):
      field1 = models.IntegerField()
      #more fields
      my_field = models.FloatField(null=True)

      @staticmethod
      def load_from_file(file):
          #parse file, set fields from file
          my_task.delay(id)
Run Code Online (Sandbox Code Playgroud)

显然,由于循环导入(models导入taskstasks导入models),这不起作用.

我暂时通过调用my_task.delay()来解决这个问题views.py,但是将模型逻辑保留在模型类中似乎是有意义的.有没有更好的方法呢?

python django circular-dependency celery django-celery

18
推荐指数
4
解决办法
4017
查看次数