相关疑难解决方法(0)

如何在Python中分析内存使用情况?

我最近对算法感兴趣,并开始通过编写一个简单的实现,然后以各种方式优化它来探索它们.

我已经熟悉用于分析运行时的标准Python模块(对于大多数事情我已经发现IPython中的timeit魔术功能已足够),但我也对内存使用感兴趣,所以我也可以探索这些权衡(例如,缓存先前计算的值表的成本与根据需要重新计算它们的成本.是否有一个模块可以为我分析给定函数的内存使用情况?

python memory profiling

198
推荐指数
7
解决办法
21万
查看次数

是否有Python的可视化分析器?

我现在使用cProfile但是我觉得编写pstats代码只是为了查询统计数据很繁琐.

我正在寻找一个可视化工具,向我展示我的Python代码在CPU时间和内存分配方面的作用.

Java世界的一些例子是visualvmJProfiler.

  • 这样的事情存在吗?
  • 是否有IDE可以做到这一点?
  • dtrace的帮助吗?

我知道KCachegrind for Linux,但我更喜欢可以在Windows/Mac上运行而无需安装KDE的东西.

python profiler user-interface profiling

93
推荐指数
6
解决办法
3万
查看次数

如何提高此代码的性能?

感谢来自这里的人们的帮助,我能够获得塔斯马尼亚骆驼拼图工作的代码.然而,它非常慢(我想.我不确定,因为这是我在Python中的第一个程序).在代码底部运行的示例需要很长时间才能在我的机器中解决:

dumrat@dumrat:~/programming/python$ time python camels.py
[['F', 'F', 'F', 'G', 'B', 'B', 'B'], ['F', 'F', 'G', 'F', 'B', 'B', 'B'],
 ['F', 'F', 'B', 'F', 'G', 'B', 'B'], ['F', 'F', 'B', 'F', 'B', 'G', 'B'],
 ['F', 'F', 'B', 'G', 'B', 'F', 'B'], ['F', 'G', 'B', 'F', 'B', 'F', 'B'],
 ['G', 'F', 'B', 'F', 'B', 'F', 'B'], ['B', 'F', 'G', 'F', 'B', 'F', 'B'],
 ['B', 'F', 'B', 'F', 'G', 'F', 'B'], ['B', 'F', 'B', 'F', 'B', 'F', 'G'],
 ['B', 'F', 'B', 'F', 'B', …
Run Code Online (Sandbox Code Playgroud)

python optimization performance time-complexity

38
推荐指数
3
解决办法
2万
查看次数

使用cProfile时返回值

我正在尝试分析一个实例方法,所以我做了类似的事情:

import cProfile

class Test():

    def __init__(self):
        pass

    def method(self):
        cProfile.runctx("self.method_actual()", globals(), locals())

    def method_actual(self):
        print "Run"

if __name__ == "__main__":
    Test().method()
Run Code Online (Sandbox Code Playgroud)

但是现在当我希望"method"返回由"method_actual"计算的值时出现问题.我真的不想两次调用"method_actual".

还有其他方法,可以线程安全吗?(在我的应用程序中,cProfile数据被保存到由其中一个args命名的数据文件中,因此它们不会被破坏,我可以在以后组合它们.)

python

21
推荐指数
3
解决办法
7045
查看次数

为什么我没有通过Python中的多处理看到加速?

我试图并行for循环(一个尴尬的并行以前问这里)和解决这个实现适合我的参数:

    with Manager() as proxy_manager:
        shared_inputs = proxy_manager.list([datasets, train_size_common, feat_sel_size, train_perc,
                                            total_test_samples, num_classes, num_features, label_set,
                                            method_names, pos_class_index, out_results_dir, exhaustive_search])
        partial_func_holdout = partial(holdout_trial_compare_datasets, *shared_inputs)

        with Pool(processes=num_procs) as pool:
            cv_results = pool.map(partial_func_holdout, range(num_repetitions))
Run Code Online (Sandbox Code Playgroud)

我需要使用代理对象(在进程之间共享)的原因是共享代理列表datasets中的第一个元素,它是一个大对象列表(每个大约200-300MB).此datasets列表通常包含5-25个元素.我通常需要在HPC群集上运行此程序.

这是一个问题,当我用32个进程和50GB内存运行这个程序(num_repetitions = 200,数据集是10个对象的列表,每个250MB)时,我甚至没有看到16倍的加速(32并行)流程).我不明白为什么 - 任何线索?任何明显的错误,或错误的选择?我在哪里可以改进这个实现?任何替代品?

我确信之前已经讨论过这个问题,原因可能多种多样,而且非常具体,因此我要求你提供2美分.谢谢.

更新:我使用cProfile进行了一些分析以获得更好的想法 - 这是一些信息,按累计时间排序.

In [19]: p.sort_stats('cumulative').print_stats(50)
Mon Oct 16 16:43:59 2017    profiling_log.txt

         555404 function calls (543552 primitive calls) in 662.201 seconds

   Ordered by: cumulative time
   List reduced from 4510 to 50 …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing multiprocessing scikit-learn

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

如何在python中确定GET请求的延迟

import subprocess

host = "yahoo.com"

ping = subprocess.Popen(
    ["ping", "-c", "3", host],
    stdout = subprocess.PIPE,
    stderr = subprocess.PIPE
)

out, error = ping.communicate()
print out
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有这个用于对服务器进行 ping 测试

基本上:

看看这个,

每次我想查询产品价格时,我都会向 f3 的 API 发送一个包含产品详细信息的 HTTP GET 请求。我正在尝试确定在接到我的电话后检索产品价格信息需要多长时间。

python latency web-crawler

4
推荐指数
2
解决办法
5813
查看次数