如何分析在函数内部调用的对象的方法?我%lprun在 jupyter 笔记本中使用魔法。请参阅以下ex.py示例文件:
class foo():
def __init__(self, a=0, n=1):
self.a=a
self.n=n
def compute(self):
result = 0
for i in range(self.n):
result += self.a
return result
def my_func():
a = 1
n = 1000
my_foo = foo(a, n)
result = my_foo.compute()
print(result)
Run Code Online (Sandbox Code Playgroud)
然后,从我的 jupyter 笔记本,我可以分析my_func:
from ex import my_func
%lprun -f my_func my_func()
Run Code Online (Sandbox Code Playgroud)
但我无法描述我的compute方法:
from ex import my_func
%lprun -f my_foo.compute my_func()
Run Code Online (Sandbox Code Playgroud)
我想要的甚至可能吗?我必须如何在-f参数中填充类方法才能使其工作?
根据文档,“cProfile 只对显式函数调用进行次数,而不是由于语法而调用的特殊方法”,......所以它应该可以工作。
我发现的一个(可能)相关问题是here。
我对使用distributedpython 库非常陌生。我有 4 个工作线程,并且我已经为每个工作线程使用 14 个核心(在 16 个可用核心中)成功启动了一些并行运行,从而导致 4*14=56 个任务并行运行。
但是,如果我只想让每个工人同时执行一项任务,该怎么办?这样,我期望在工作线程上并行使用 14 个内核执行一项任务。