小编Zac*_*aro的帖子

大量记忆出血导致堆大小从大约64mb变为1.5gb,大约8秒.垃圾收集器的问题?

这是问题所在:

内存使用量不受控制

如您所见,内存使用情况失控!我必须向JVM添加参数以增加堆大小以避免内存错误,同时我弄清楚发生了什么.不好!

基本应用摘要(针对上下文)

该应用程序(最终)将用于基本的屏幕CV和模板匹配类型的东西,用于自动化目的.我想在观看屏幕时实现尽可能高的帧速率,并通过一系列独立的消费者线程处理所有处理.

我很快发现股票机器人类的速度非常可怕,所以我打开了源代码,取出了所有重复的工作并浪费了开销,并将其重建为我自己的一个名为FastRobot的类.

班级代码:

public class FastRobot {
    private Rectangle screenRect;
    private GraphicsDevice screen;
    private final Toolkit toolkit;
    private final Robot elRoboto;
    private final RobotPeer peer;
    private final Point gdloc;
    private final DirectColorModel screenCapCM;
    private final int[] bandmasks;

    public FastRobot() throws HeadlessException, AWTException {
        this.screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
        this.screen = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        toolkit = Toolkit.getDefaultToolkit();
        elRoboto = new Robot();
        peer = ((ComponentFactory)toolkit).createRobot(elRoboto, screen);

        gdloc = screen.getDefaultConfiguration().getBounds().getLocation();
        this.screenRect.translate(gdloc.x, gdloc.y);

        screenCapCM = new DirectColorModel(24,
                /* red mask */    0x00FF0000,
                /* green …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection jvm memory-leaks

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

是否可以修改Eclipse的注释行为以在当前缩进级别添加斜杠,而不是在行的开头添加斜杠?

默认情况下,按下注释快捷键Ctrl+ /,行为如下:

在此输入图像描述

请注意,//get添加在行的最左侧位置.

有没有办法设置它,以便//出现与注释掉的代码相同的缩进级别?

例如
在此输入图像描述

也许是一种Python习惯,但是当一切都处于同一个缩进级别时,我发现解析起来要容易得多.

有没有办法改变斜线出现的位置?

java eclipse comments

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

非常奇怪的Web Scraping问题:发布请求的行为不符合预期

我正在尝试以编程方式将一些数据提交到公司管理页面上的表单,而不是手工完成.

我写了很多其他工具来抓取这个网站并操纵数据.然而,出于某种原因,这种特殊的一个是给我一的麻烦.

通过浏览器浏览:

以下是我试图抓取并发布数据的页面.请注意,这些页面通常显示在js shadowboxes中,但是,它在Javascript禁用时运行良好,所以我假设javascript不是刮板问题的问题.

(注意,由于这是一个公司页面,我已经填写了我已经用垃圾标题替换了所有表单字段,因此,例如,客户端编号是完全组成的)

另外,由于它是用户名/密码墙背后的公司页面,我无法透露网站进行测试,因此我尝试尽可能详细地注入此帖子!

主要入口点在这里:

在此输入图像描述

在此页面中,我单击"Add New form",在新标记中打开此下一页(因为禁用了javascript).

在此输入图像描述

在这个页面上,我填写小表单,单击提交,然后获取显示成功消息的下一页.

在此输入图像描述

应该简单吧?

代码尝试1:机械化

import mechanize
import base64
import cookielib


br = mechanize.Browser()

username = 'USERNAME'
password = 'PASSWORD'
br.addheaders.append(('Authorization', 
    'Basic %s' % base64.encodestring('%s:%s' % (username, password))))
br.addheaders = [('User-agent', 
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML,'
    ' like Gecko) Chrome/25.0.1364.172 Safari/537.22')]

br.open('www.our_company_page.com/adm/add_forms.php')

links = [link for link in br.links()]

# Follow "Add a form" Link
response = br.follow_link(links[0]) 

br.select_form(nr=0)
br.form.set_all_readonly(False)
br.form['formNumber'] = "FROM_PYTHON"
br.form['RevisionNumber'] = …
Run Code Online (Sandbox Code Playgroud)

python mechanize urllib2 web-scraping

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

分析使用多处理的Python代码?

我有一个简单的生产者消费者模式在我的gui代码中设置.我试图仅描述特定的消费者部分,看看是否有任何优化机会.但是,当我尝试运行代码时,python -m cProfile -o out.txt myscript.py我收到了Python pickle模块抛出的错误.

  File "<string>", line 1, in <module>
  File "c:\python27\lib\multiprocessing\forking.py", line 374, in main
    self = load(from_parent)
  File "c:\python27\lib\pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "c:\python27\lib\pickle.py", line 858, in load
    dispatch[key](self)
  File "c:\python27\lib\pickle.py", line 880, in load_eof
    raise EOFError
EOFError
Run Code Online (Sandbox Code Playgroud)

代码中的基本模式是

class MyProcess(multiprocessing.Process):
    def __init__(self, in_queue, msg_queue):
        multiprocessing.Process.__init__(self)
        self.in_queue = in_queue
        self.ext_msg_queue = msg_queue
        self.name == multiprocessing.current_process().name

    def run(self):
        ## Do Stuff with the queued items
Run Code Online (Sandbox Code Playgroud)

这通常是从GUI端提供的任务,但出于测试目的,我将其设置如下.

if __name__ == '__main__': …
Run Code Online (Sandbox Code Playgroud)

python profiling cprofile

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

通过Javascript更新后获取更改后的HTML内容?(的HtmlUnit)

javascript更新弄清楚如何获取某些HTML的内容时遇到了一些麻烦.

具体来说,我正试图从美国海军天文台主时钟获取当前时间.它有一个h1与元件IDUSNOclk,其中它显示当前时间.

首次加载页面时,此元素设置为显示"正在加载...",然后javascript启动并将其更新为当前时间

function showTime()
    {
        document.getElementById('USNOclk').innerHTML="Loading...<br />";
        xmlHttp=GetXmlHttpObject();
        if (xmlHttp==null){
            document.getElementById('USNOclk').innerHTML="Sorry, browser incapatible. <BR />";
            return;
        } 
        refresher = 0;
        startResponse = new Date().getTime();
        var url="http://tycho.usno.navy.mil/cgi-bin/time.pl?n="+ startResponse;
        xmlHttp.onreadystatechange=stateChanged;
        xmlHttp.open("GET",url,true);
        xmlHttp.send(null);
    }  
Run Code Online (Sandbox Code Playgroud)

所以,问题是我不知道如何获得更新的时间.当我检查元素时,我看到"正在加载..."作为h1元素的内容.

我已经仔细检查了javascript是否已启用,并且我已经尝试调用该waitForBackgroundJavaScript函数webclient以及希望它能给javascript时间开始更新内容.但是,到目前为止还没有成功.

我目前的代码:

import com.gargoylesoftware.htmlunit._
import com.gargoylesoftware.htmlunit.html.HtmlPage

object AtomicTime {

  def main(args: Array[String]): Unit = {
    val url = "http://tycho.usno.navy.mil/what.html"
    val client = new WebClient(BrowserVersion.CHROME)

    println(client.isJavaScriptEnabled()) // returns true
    client.waitForBackgroundJavaScript(10000) …
Run Code Online (Sandbox Code Playgroud)

java scala htmlunit

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

是否有可能让Jinja2忽略模板中包含{}的部分(例如,内联javascript)

我通过复制/粘贴他们在网站上提供的代码,在我的页面上添加了一个facebook按钮.

它看起来像这样:

"http://www.facebook.com/dialog/feed?app_id={{fbapp_id}}&link={{link_url}}&message={{share_message|urlencode}}&display=popup&redirect_uri={{link_url}}  
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它{}在那里Jinja找到了.但是,由于我不想让任何上述代码替换为任何东西,我可以在模板中添加一些东西来告诉Jinja忽略分隔符之间的所有内容吗?

Python处理程序:

class MainHandler(webapp2.RequestHandler):
    def get(self):
        template = JINJA_ENV.get_template('index.html')
        self.response.write(template.render(None))
Run Code Online (Sandbox Code Playgroud)

python jinja2

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

有没有更快的方法来测试两个列表是否具有与==运算符中内置的Pythons完全相同的元素?

如果我有两个列表,每个800个元素长并填充整数.有没有比使用内置==运算符更快的方式来比较它们具有完全相同的元素(如果没有,则为短路)?

a = [6,2,3,88,54,-486]
b = [6,2,3,88,54,-486]
a == b 
>>> True
Run Code Online (Sandbox Code Playgroud)

有什么比这更好的?

我很好奇只因为我有一个巨大的列表列表可供比较.

python

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

有没有办法在检查元素后复制Chrome开发工具中出现的路径?

当您选择Inspect ElementChrome时,在Developer's面板的底部会显示该元素的路径.

在此输入图像描述

在这种情况下,它是body > div#divsinglecolumnwidth.singlecolumnwidth > div#productdescription>h2.

有没有办法复制那条"路径"?

html dom google-chrome

7
推荐指数
3
解决办法
3248
查看次数

有没有办法从导入的模块中获取“父”模块的名称?

我很好奇是否可以访问其他模块导入到的父模块的名称。

例如,如果我有一个模块(moduleA),而父模块是模块,foo.py则将其导入到该模块中,是否有可能moduleA知道其foo位置?

模块A

def print_parent_module(): 
    os.path.asbpath(#somehow access filename of parent module) 
Run Code Online (Sandbox Code Playgroud)

foo.py

import moduleA 

print moduleA.print_parent_module()
>>> "foo.py"
Run Code Online (Sandbox Code Playgroud)

python

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

检查调音台线路中的音频播放级别?

我试图弄清楚Windows中是否播放任何类型的声音(通过任何应用程序).如果有什么东西在某处发出声音,我想知道它!

按照文档后,我已经找到了如何获得机器上的混音器列表,以及这些混音器的行 - 如果我理解正确的话,那就是混音器的输入/输出.

但是,我遇到的问题是我不知道如何从线路获取所需的数据.

我看到的唯一具有音量级概念的界面是DataLine.这个问题是我无法弄清楚什么返回实现数据线接口的对象.

列举所有混音器和线路:

public static void printMixers() {
    Mixer.Info[] mixers = AudioSystem.getMixerInfo();
    for (Mixer.Info mixerInfo : mixers) {
        Mixer mixer = AudioSystem.getMixer(mixerInfo);
        try {
            mixer.open();
            Line.Info[] lines = mixer.getSourceLineInfo();
            for (Line.Info linfo : lines) {
                System.out.println(linfo);
            }
        } 
        catch (LineUnavailableException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

该代码枚举并显示我机器上的所有音频设备.从那,其中一个不应该Lines包含某种播放级数据?

java

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