在python中str()和int()是否耗时?

在python中str()和int()是否耗时?,python,performance,Python,Performance,我面对自己使用了很多这样的结构: for node in range(int(self.num_nodes)): dists[str(node)] = -1 所以,我的问题是:例如,当调用str()或int()时,python(3+)使用什么?它只是投射?它会改变信仰吗?(还有别的吗?) 你如何建议我写这种代码?请记住,dist的键必须是str,num_nodes也是str,str和int的价格完全取决于传递给它们的对象。最终,它们只调用对象的和钩子方法。对于大多数简单对象,这些操作应

我面对自己使用了很多这样的结构:

for node in range(int(self.num_nodes)):
    dists[str(node)] = -1
所以,我的问题是:例如,当调用
str()
int()
时,python(3+)使用什么?它只是投射?它会改变信仰吗?(还有别的吗?)


你如何建议我写这种代码?请记住,dist的键必须是
str
num_nodes
也是
str
str
int
的价格完全取决于传递给它们的对象。最终,它们只调用对象的和钩子方法。对于大多数简单对象,这些操作应该非常快。e、 g.将一个简单字符串转换为整数需要我的计算机大约0.5微秒:

$python -mtimeit -s 'x="1"' 'int(x)'
1000000 loops, best of 3: 0.479 usec per loop
$ python -mtimeit -s 'x=1' 'str(x)'
10000000 loops, best of 3: 0.12 usec per loop
反向操作只需略多于0.1微秒:

$python -mtimeit -s 'x="1"' 'int(x)'
1000000 loops, best of 3: 0.479 usec per loop
$ python -mtimeit -s 'x=1' 'str(x)'
10000000 loops, best of 3: 0.12 usec per loop
然而,创建病理对象非常容易,这将非常昂贵

import time
class Argv(object):
    def __str__(self):
        time.sleep(1000)
        return 'ha ha ha!'

str
int
的价格完全取决于传递给它们的对象。最终,它们只调用对象的和钩子方法。对于大多数简单对象,这些操作应该非常快。e、 g.将一个简单字符串转换为整数需要我的计算机大约0.5微秒:

$python -mtimeit -s 'x="1"' 'int(x)'
1000000 loops, best of 3: 0.479 usec per loop
$ python -mtimeit -s 'x=1' 'str(x)'
10000000 loops, best of 3: 0.12 usec per loop
反向操作只需略多于0.1微秒:

$python -mtimeit -s 'x="1"' 'int(x)'
1000000 loops, best of 3: 0.479 usec per loop
$ python -mtimeit -s 'x=1' 'str(x)'
10000000 loops, best of 3: 0.12 usec per loop
然而,创建病理对象非常容易,这将非常昂贵

import time
class Argv(object):
    def __str__(self):
        time.sleep(1000)
        return 'ha ha ha!'

dists=[-1]*int(self.num\u节点)
可能会更好。有没有理由需要一个dict,它的键只是整数的字符串表示形式?
dists=[-1]*int(self.num\u节点)
可能会更好。您需要一个dict的原因是什么?它的键只是整数的字符串表示形式。谢谢您提供的示例:谢谢你的例子D