有一次,在看了Mike Muller的性能优化教程(我认为这个)之后,一个想法开始存在于我的脑海中:如果性能很重要,最小化通过索引访问循环中的项目,例如,如果您需要x[1]在循环中多次访问for x in l-为变量赋值x[1]并在循环中重用它.
现在我有了这个合成的例子:
import timeit
SEQUENCE = zip(range(1000), range(1, 1001))
def no_unpacking():
return [item[0] + item[1] for item in SEQUENCE]
def unpacking():
return [a + b for a, b in SEQUENCE]
print timeit.Timer('no_unpacking()', 'from __main__ import no_unpacking').timeit(10000)
print timeit.Timer('unpacking()', 'from __main__ import unpacking').timeit(10000)
Run Code Online (Sandbox Code Playgroud)
unpacking()和no_unpacking()函数返回相同的结果.实现方式不同:unpacking()将项目解包到循环中a和b循环中; no_unpacking()通过索引获取值.
对于python27,它显示:
1.25280499458
0.946601867676
Run Code Online (Sandbox Code Playgroud)
换言之,unpacking()表现优于no_unpacking()约25%.
问题是:
奖金问题:
pypy- …我假设这是可能的,实际上非常简单,但我是咕噜咕噜和量角器的新手,我无法在网上找到答案(也许我使用了错误的搜索条件).
我在文件中有以下e2e测试test/e2e/Recipients.js:
describe('Recipients Tab', function() {
beforeEach(function () {
browser.get('#/recipients');
});
it('should have no e-mail list', function () {
expect(element(by.css('accordion')).isPresent()).toBe(false);
});
});
Run Code Online (Sandbox Code Playgroud)
目前,我这样做:
grunt e2e
Run Code Online (Sandbox Code Playgroud)
我的量角器配置文件:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
capabilities: {
'browserName': 'chrome'
},
specs: ['../e2e/**/*.js'],
baseUrl : 'http://localhost:8080/spr',
jasmineNodeOpts: {
showColors: true // Use colors in the command line report.
}
};
Run Code Online (Sandbox Code Playgroud)
当然这会运行我所有的测试,但是当我正在开发一个特定的测试时,我不想运行整个测试.我想运行这个文件.
我怎样才能做到这一点?有旗帜还是什么?
谢谢
这是我在html模板中替换变量的方法
a1 = '<html><title>{0}</title><body>{1}</body></html>'
vars = ['test', 'test']
output = a1.format(*vars)
Run Code Online (Sandbox Code Playgroud)
问题是..当html中有css时,这与css标签冲突.
因为css包含:
{}'s
Run Code Online (Sandbox Code Playgroud) 在我们的内部angularjs项目中,其中一个服务有$http.head()我正在尝试测试的调用.
为了测试,我正在使用由提供的Fake HTTP后端angular-mocks.这是相关代码:
it('handle status code 200', inject(function ($httpBackend, ConnectionService) {
spyOn(Math, 'random').andReturn(0.1234);
httpBackend = $httpBackend;
httpBackend.expectHEAD('ping?rand=1234').respond(200);
ConnectionService.sendRequest();
httpBackend.flush();
expect(ConnectionService.stats.packetsReceived).toEqual(5);
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
}));
Run Code Online (Sandbox Code Playgroud)
将测试结果运行到以下错误中:
PhantomJS 1.9.7 (Mac OS X) connection service tests sendRequest function handle status code 200
FAILED TypeError: 'undefined' is not a function (evaluating 'httpBackend.expectHEAD('ping?rand=1234')')
at /path/to/app/app-connection-service_test.js:66
at d (/path/to/app/bower_components/angular/angular.min.js:35)
at workFn (/path/to/app/bower_components/angular-mocks/angular-mocks.js:2159)
Run Code Online (Sandbox Code Playgroud)
经过一番挖掘后,我发现了相关的github问题:
据我所知,这意味着expectHEAD()在角度模拟中确实没有方法 - 它已被记录,但实际上,它还不是稳定角度释放的一部分.
什么是最好的方法?
请注意,我必须保持angular <= 1.2,因为此应用程序需要在IE8上运行(Angular 1.3正在放弃对IE8的支持).
我正在考虑的一个解决方法是替换head()为get().在这种情况下,我可以用现有 …
朋友们,我指的是我关注的所有Twitter用户.
是否可以使用tweepy与python 2.7.6显示所有朋友的完整列表?
我发现可以使用以下代码显示包含我的一些朋友的列表.经过授权后当然.
api = tweepy.API(auth)
user = api.get_user('MyTwitterHandle')
print "My Twitter Handle:" , user.screen_name
ct = 0
for friend in user.friends():
print friend.screen_name
ct = ct + 1
print "\n\nFinal Count:", ct
Run Code Online (Sandbox Code Playgroud)
此代码成功打印了Twitter上最近20位朋友,该ct变量等于20.此方法排除了我在Twitter上关注的其他用户.
是否可以在Twitter上显示我关注的所有用户?或者至少是一种调整参数的方法,以允许我包含更多朋友?
起初我不得不说这是我第一次接触angularjs和node.js所以这可能是一个愚蠢的问题,但我想学习使用angularjs所以我按照本教程https://docs.angularjs.org/教程和一切都按预期进行,直到我开始运行End End to End Tests部分.
当我运行此命令时:
npm run update-webdriver
Run Code Online (Sandbox Code Playgroud)
它说:
selenium standalone is up to date.
chromedriver is up to date.
Run Code Online (Sandbox Code Playgroud)
然后我打开本地服务器:
npm start
Run Code Online (Sandbox Code Playgroud)
在运行时我运行测试:
npm run protractor
Run Code Online (Sandbox Code Playgroud)
在我的终端中导致:o
直接使用ChromeDriver ...
[launcher]错误:在/home/qw/www/angular-phonecat/node_modules/protractor/selenium/chromedriver.exe找不到chromedriver
文件chromedriver.exe确实不存在(有chromedriver_2.10.zip),我真的不认为.exe文件应该在那里,考虑到我使用ubuntu 14.04(本教程应该是角度版本是1.4.0).
对于某些Windows版本,这是一个tuto吗?
任何人都可以帮助我(初学者可以理解的方式:))?
我目前有在我们的集成服务器上运行的量角器设置.在protractor.conf.js文件中,我有以下内容:
multiCapabilities: [{
'browserName': 'firefox',
'platform': 'MAC'
}, {
'browserName': 'chrome',
'platform': 'MAC'
}]
Run Code Online (Sandbox Code Playgroud)
我想从命令行本地运行时覆盖它.我试过以下但没有成功
protractor --verbose --browser=chrome
Run Code Online (Sandbox Code Playgroud)
问题:当从命令行本地运行时,如何切换到仅使用单个chrome实例?
有人应该在哪里为她的 Django 项目放置任何外部 python 脚本?更合适的位置是什么(如果有的话)?她应该在主 Django 项目中创建一个文件夹并将其放在那里并将其添加到 python 路径中还是有更好的方法来处理这个问题?使用外部脚本的原因是不要使用可以在脚本文件中更好地组织并且可以为多个视图提供服务的代码来重载视图。
示例HTML
<h2 id="name">
ABC
<span class="numbers">123</span>
<span class="lower">abc</span>
</h2>
Run Code Online (Sandbox Code Playgroud)
我可以用以下内容获得数字:
soup.select('#name > span.numbers')[0].text
Run Code Online (Sandbox Code Playgroud)
如何ABC使用BeautifulSoup和select函数获取文本?
在这种情况下怎么样?
<div id="name">
<div id="numbers">123</div>
ABC
</div>
Run Code Online (Sandbox Code Playgroud) 有没有一个 python 日期时间库可以做到这一点?
dt = iso8601.parse_date("2016-03-13 00:00:00-08")
dt = dt.astimezone(us_pacific)
dt += timedelta(days=1)
self.assertEqual(dt, iso8601.parse_date("2016-03-14 00:00:00-07"))
Run Code Online (Sandbox Code Playgroud)
换句话说,我正在寻找一个库,其中 datetime 对象足够智能,可以知道 timedelta(days=1) 与 timedelta(hours=24) 不同(支持月份的奖励积分)。
目前,我发现错误风险最小的解决方法是使用日期,然后将其转换为日期时间,并将给定时区的时间设置为 0。但问题是,很容易假设上面的代码将按给定的方式工作,所以我想使用一个不存在风险的库。同样,如果给定一个日期时间对象,则将其转换回日期会很麻烦。
编辑:
这个问题被搁置了,因为询问是否有一个软件库可以完成一项任务,而不是必须从头开始编写代码,这是题外话。我不知道如何更好地表达,因为我已经解释过解决方法是使用日期,然后添加时间,这可以通过多种方式完成。我正在寻找一种更好的方法,我已经知道它不是 python 标准库的一部分。我很确定会问“有没有更好的方法来做到这一点?”,或者“我怎样才能在大约相同数量的代码行中完成这个任务?” 也是完全有效的问题。
如果没有图书馆做这样的事情,我当然可以做到。我将其称为 YADateTime,因为它将是另一个 python 日期时间库。也就是说,如果已经有一个库,那么我就没有必要再创建一个。
python ×6
angularjs ×4
javascript ×3
python-2.7 ×3
protractor ×2
selenium ×2
datetime ×1
django ×1
django-views ×1
end-to-end ×1
for-loop ×1
gruntjs ×1
html ×1
html-parsing ×1
http ×1
http-head ×1
node.js ×1
npm ×1
performance ×1
tweepy ×1
twitter ×1