我写了以下脚本
基本上,我只是在学习机器学习的Python,并想检查计算密集型任务的执行情况.我观察到,对于10**8次迭代,Python占用了大量的RAM(大约3.8 GB)并且还占用了大量的CPU时间(只是冻结了我的系统)
我想知道是否有任何方法可以通过代码或某些全局设置来限制时间/内存消耗
脚本 -
initial_start = time.clock()
for i in range(9):
start = time.clock()
for j in range(10**i):
pass
stop = time.clock()
print 'Looping exp(',i,') times takes', stop - start, 'seconds'
final_stop = time.clock()
print 'Overall program time is',final_stop - initial_start,'seconds'
Run Code Online (Sandbox Code Playgroud) 我有一个简单的例子:
def __init__(self,string):
self.string = string
def UI32(self):
tmp = self.string[:4]
self.string = self.string[4:]
return unpack(">I",tmp)[0]
data = file.read()
U = UI(data)
for i in range(60000):
test = UI32()
总时间:22秒!
我试图将数据结构中的一组元素替换为其他值.在python的情况下,在字符串中进行这种替换似乎比在列表中快得多(如下面的基准测试所示).有人可以解释原因.
注意:这些测试是使用python 2.7执行的.
def string_replace_test(s, chars):
"""Replaces a set of chars to 0"""
new = s
for c in chars:
new = new.replace(c, '0')
return new
def list_replace_test(s, chars):
"""Replaces a set of chars to 0"""
for a in xrange(len(s)):
if s[a] in chars:
s[a] = '0'
if __name__ == '__main__':
import timeit
s = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec
etfringilla purus. Pellentesque bibendum urna at neque consectetur
at tincidunt nulla luctus. Pellentesque augue lacus, …Run Code Online (Sandbox Code Playgroud) 所以我们说吧
start = 10
end = 30
Run Code Online (Sandbox Code Playgroud)
现在我需要一个循环,从去start到end
我在考虑这样的事情:
for i in [start..end]
print i
Run Code Online (Sandbox Code Playgroud)
但那不太奏效.有干净的方法吗?
我正在尝试加速以下代码:
from math import log
from random import random
def logtest1(N):
tr=0
for i in range(1,N):
T= 40 + 10*random()
tr += -log(random())/T
Run Code Online (Sandbox Code Playgroud)
我是python的新手(来自matlab)...而这个相同的代码在python中运行速度比matlab(和Julia)慢5倍,这引起了我的注意.
我尝试使用numba和一个长尾小鹦鹉包装器,而不是python的numpy函数,但根本没有任何改进.
我很感激任何帮助.谢谢.
编辑:整个事情是蒙特卡罗模拟,所以N非常大... 10e6用于测试目的
这不是一个功课问题,我可以向你保证.
我正在尝试编写一个测试相等性是否a**n + b**n = c**n 成立的函数
n∈{2,3,...,10}.如果存在等于n的值n,则函数应返回最低值,如a int.False如果相等不适用于给定范围内的任何n值,则该函数应返回.
例如
print(f(3,4,5))
Run Code Online (Sandbox Code Playgroud)
输出:
2
Run Code Online (Sandbox Code Playgroud)
和
print(f(1,2,3))
Run Code Online (Sandbox Code Playgroud)
输出:
False
Run Code Online (Sandbox Code Playgroud)
我很想看到这个问题的不同方法.我向你保证这不是一个功课问题.提前致谢 :)