我想在Windows平台上以微秒精度计算函数的性能.
现在Windows本身具有毫秒级的粒度,所以我怎样才能做到这一点.
我尝试了以下示例,但没有得到正确的结果.
LARGE_INTEGER ticksPerSecond = {0};
LARGE_INTEGER tick_1 = {0};
LARGE_INTEGER tick_2 = {0};
double uSec = 1000000;
// Get the frequency
QueryPerformanceFrequency(&ticksPerSecond);
//Calculate per uSec freq
double uFreq = ticksPerSecond.QuadPart/uSec;
// Get counter b4 start of op
QueryPerformanceCounter(&tick_1);
// The ope itself
Sleep(10);
// Get counter after opfinished
QueryPerformanceCounter(&tick_2);
// And now the op time in uSec
double diff = (tick_2.QuadPart/uFreq) - (tick_1.QuadPart/uFreq);
Run Code Online (Sandbox Code Playgroud) 我有一个python包我正在编写,我遇到的问题是导入标准库而不是我的文件,因为名称冲突.
例如,如下所示的文件结构:
package/__init__.py# No data in this file
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/env python
print 'Loading module.py'
import signal
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/env python
print 'Loading signal.py'
Run Code Online (Sandbox Code Playgroud)
运行时我得到以下结果:
$ ./module.py
Loading module.py
Run Code Online (Sandbox Code Playgroud)
我想得到:
$ ./module.py
Loading module.py
Loading signal.py
Run Code Online (Sandbox Code Playgroud)
所以,当我运行module.py时,它import signal会转到stdlib版本.我怎样才能强制module.py导入signal.py呢?
如标签中所述,这需要能够在python-2.4.3上运行.虽然这是旧版本,但它包含在RHEL 5中.
只是为了获得更多信息,我明确地进行了以下设置:
[10:30pm][~/test] tree .
.
|-- package
| |-- __init__.py
| |-- module.py
| `-- signal.py
`-- script
[10:30pm][~/test] cat script
#!/usr/bin/env python
from package import signal
[10:30pm][~/test] cat package/__init__.py
[10:30pm][~/test] …Run Code Online (Sandbox Code Playgroud) 我正在通过子进程执行curl命令.此curl命令在另一台服务器上启动视频处理,并等待响应.完成此过程后,远程服务器将返回json对象.我正在使用poll()值检查子进程的状态,该值为None - 进程未完成,0进程成功完成,1-表示错误.
如果处理在远程服务器上花费大约30分钟或更少,我得到正确的响应,但如果处理花费更多时间,我只得到无值,即使我可以看到远程服务器已经完成处理并且已经返回了json对象.
任何人都可以告诉我,poll()可能的原因可能是在一定时间后才返回None.先感谢您.
我的Popen对象是:
object = subprocess.Popen(str(curlCmd), shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
我object.poll()每隔2秒就打电话一次,检查过程是否成功完成.
我正在尝试使用python自动化进程.如果我只是在终端,工作流程如下:
user:> . /path/to/env1.sh
user:> python something.py
user:> exit
user:> . /path/to/env2.sh
user:> python something2.py
user:> exit
Run Code Online (Sandbox Code Playgroud)
等几步.每个都会env.sh生成一个新脚本,其中包含大量环境变量以及当前目录中未设置的内容.我很确定我需要使用子进程,但我不确定如何去做.理想情况下,工作流程将是:打开新shell - >运行一些命令 - >退出shell - >根据需要重复.
编辑:似乎需要一些澄清.我理解如何使用subprocess.Popen()和subprocess.call()从调用Python脚本的shell中调用东西.这不是我需要的.当一个人调用env.sh它时,它会设置大量的环境变量和一些其他相关的东西,然后将你放入一个shell来运行命令.重要的是要注意在运行所需命令后env.sh直到一种类型exit才会终止.使用subprocess.call("./env.sh", shell = True)打开shell并停在那里.这就像输入命令一样,./env.sh除了发出exit命令时,其余的python脚本.所以:
subprocess.call(". /path/to/env.sh", shell = True)
subprocess.call("python something.py", shell = True)
Run Code Online (Sandbox Code Playgroud)
不做我需要做的事情,也不做:
p = subprocess.Popen(". /path/to/env.sh", shell = True)
subprocess.call("python something.py", shell = True)
p.kill()
Run Code Online (Sandbox Code Playgroud) 给定一个字符串我想计算len = 5的子串数.
例如:输入:"ABCDEFG"输出:3
我不确定在python中最简单快捷的方法是什么.任何的想法?
更新:
我只想计算不同的子串.
输入:"AAAAAA"子串:2次"AAAAA"输出:1
根据C11 WG14草案版本N1570:
标头
<ctype.h>声明了几个用于分类和映射字符的函数.在所有情况下,参数都是aint,其值应表示为unsigned char或等于宏的值EOF.如果参数具有任何其他值,则行为未定义.
是不确定的行为?:
#include <ctype.h>
#include <limits.h>
#include <stdlib.h>
int main(void) {
char c = CHAR_MIN; /* let assume that char is signed and CHAR_MIN < 0 */
return isspace(c) ? EXIT_FAILURE : EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
标准是否允许传递char给isspace()(char到int)?换句话说,char转换后可以int 表示为unsigned char?
能够代表.
是char能够被表示为unsigned char?是的.§6.2.6.1/ 4:
存储在任何其他对象类型的非位字段对象中的值由n
×CHAR_BIT …
我在Project Euler上解决了一些问题,并且必须生成200万个素数以解决问题.我对Eratosthenes筛子的实施结果非常缓慢,但我不知道为什么.有人可以解释一下这个实现的主要问题.我觉得它太漂亮了,然后我发现它非常可怕:(.我在网上发现了它的另一个实现,它比我的快得多.
def generatePrimes(upperBound):
numbers = range(2,upperBound+1)
primes = []
while numbers:
prime = numbers[0]
primes.append(prime)
numbers = filter((lambda x: x%prime),numbers)
return primes
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢你的所有答案!这样做的结论是过滤器是问题所在,因为它遍历每个元素(而不仅仅是那些被标记为非素数的元素),因为它每次都会创建一个新列表.用旧的for循环和一轮过滤重写它,它的工作速度更快.新代码:
def generatePrimes(upperBound):
numbers = range(2,upperBound+1)
for i in xrange(len(numbers)):
if(numbers[i] != 0):
for j in xrange(i+numbers[i],len(numbers),numbers[i]):
numbers[j] = 0
primes = filter(lambda x: x,numbers)
return primes
Run Code Online (Sandbox Code Playgroud) 目前正在运行:
l1 = [i for i in range(0,10)]
l2 = [i for i in range(0,10)]
l3 = [i for i in range(0,10)]
lists = [l1, l2, l3]
length = len(lists[0])
for l in lists:
if length != len(l):
raise ValueErrorr('not all lists have same length!')
Run Code Online (Sandbox Code Playgroud)
有没有比for循环测试更漂亮的方法?是否有更快/更好的方式O(n)?
我有两个1维numpy.ndarray对象,并想知道第一个数组中的哪些元素在第二个数组中dx的任何元素内.
我现在拥有的是什么
# setup
numpy.random.seed(1)
a = numpy.random.random(1000) # create one array
numpy.random.seed(2)
b = numpy.random.random(1000) # create second array
dx = 1e-4 # close-ness parameter
# function I want to optimise
def find_all_close(a, b):
# compare one number to all elements of b
def _is_coincident(t):
return (numpy.abs(b - t) <= dx).any()
# vectorize and loop over a
is_coincident = numpy.vectorize(_is_coincident)
return is_coincident(a).nonzero()[0]
Run Code Online (Sandbox Code Playgroud)
返回timeit结果如下
10 loops, best of 3: 16.5 msec per …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 python 3.2 SMTPlib.sendmail() 函数发送消息,在对 SMTP 库进行一些修改后(即注释掉抑制错误消息的 rset() 函数)我设法检索到以下错误消息从服务器:
SendMail 失败(554,b'交易失败:由于可能的滥用而无法发送邮件;请访问http://postmaster.yahoo.com/abuse_smtp.html了解更多信息')
雅虎邮件 SMTP 服务器认为我在发送垃圾邮件,该 URL 确实链接到任何有用的东西。我认为这与标题不足有关,我似乎无法找到关于什么构成合规标题的明确答案,而且我已经阅读了 Gmail 的类似问题。此帖子已替换为模拟电子邮件。
任何帮助,将不胜感激
我的完整代码如下:
self.message = email.message_from_string('''To: <ksmith@yahoo.co.nz>
From: <rwilson@yahoo.co.nz>
Reply-To: <rwilson@yahoo.co.nz>
Subject: Test send mail \n\n Hello''')
fromAddress = 'rwilson@yahoo.co.nz'
toAddress = 'ksmith@yahoo.co.nz'
try:
self.smtp = SMTP()
self.smtp.connect('smtp.mail.yahoo.com')
except Exception:
print('Connection Failed')
print(traceback.format_exc())
try:
self.smtp.login('rwilson','tree22')
except Exception:
print('Login Failed!')
print(traceback.format_exc())
try:
self.smtp.sendmail(fromAddress,toAddress ,self.message.as_string())
print("Message sucessfully sent!")
self.smtp.close()
except Exception as e:
print('SendMail Failed')
print(e)
Run Code Online (Sandbox Code Playgroud) python ×8
algorithm ×4
c ×2
performance ×2
subprocess ×2
arrays ×1
bash ×1
c++ ×1
c11 ×1
email ×1
numpy ×1
popen ×1
precision ×1
primes ×1
python-2.4 ×1
python-3.2 ×1
python-3.x ×1
shell ×1
smtp ×1
windows ×1
yahoo-mail ×1