如您所见,内存使用情况失控!我必须向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) 默认情况下,按下注释快捷键Ctrl
+ /
,行为如下:
请注意,//
get添加在行的最左侧位置.
有没有办法设置它,以便//
出现与注释掉的代码相同的缩进级别?
例如
也许是一种Python习惯,但是当一切都处于同一个缩进级别时,我发现解析起来要容易得多.
有没有办法改变斜线出现的位置?
我正在尝试以编程方式将一些数据提交到公司管理页面上的表单,而不是手工完成.
我写了很多其他工具来抓取这个网站并操纵数据.然而,出于某种原因,这种特殊的一个是给我一吨的麻烦.
以下是我试图抓取并发布数据的页面.请注意,这些页面通常显示在js shadowboxes中,但是,它在Javascript禁用时运行良好,所以我假设javascript不是刮板问题的问题.
(注意,由于这是一个公司页面,我已经填写了我已经用垃圾标题替换了所有表单字段,因此,例如,客户端编号是完全组成的)
另外,由于它是用户名/密码墙背后的公司页面,我无法透露网站进行测试,因此我尝试尽可能详细地注入此帖子!
主要入口点在这里:
在此页面中,我单击"Add New form"
,在新标记中打开此下一页(因为禁用了javascript).
在这个页面上,我填写小表单,单击提交,然后获取显示成功消息的下一页.
应该简单吧?
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) 我有一个简单的生产者消费者模式在我的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) 我在 javascript更新后弄清楚如何获取某些HTML的内容时遇到了一些麻烦.
具体来说,我正试图从美国海军天文台主时钟获取当前时间.它有一个h1
与元件ID
的USNOclk
,其中它显示当前时间.
首次加载页面时,此元素设置为显示"正在加载...",然后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) 我通过复制/粘贴他们在网站上提供的代码,在我的页面上添加了一个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) 如果我有两个列表,每个800个元素长并填充整数.有没有比使用内置==
运算符更快的方式来比较它们具有完全相同的元素(如果没有,则为短路)?
a = [6,2,3,88,54,-486]
b = [6,2,3,88,54,-486]
a == b
>>> True
Run Code Online (Sandbox Code Playgroud)
有什么比这更好的?
我很好奇只因为我有一个巨大的列表列表可供比较.
当您选择Inspect Element
Chrome时,在Developer's面板的底部会显示该元素的路径.
在这种情况下,它是body > div#divsinglecolumnwidth.singlecolumnwidth > div#productdescription>h2
.
有没有办法复制那条"路径"?
我很好奇是否可以访问其他模块导入到的父模块的名称。
例如,如果我有一个模块(moduleA
),而父模块是模块,foo.py
则将其导入到该模块中,是否有可能moduleA
知道其foo
位置?
def print_parent_module():
os.path.asbpath(#somehow access filename of parent module)
Run Code Online (Sandbox Code Playgroud)
import moduleA
print moduleA.print_parent_module()
>>> "foo.py"
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚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
包含某种播放级数据?