使用列表推导式比普通的 for 循环要快得多。给出的原因是列表推导中不需要追加,这是可以理解的。\n但我在各个地方发现列表比较比应用更快。我也有过这样的经历。但无法理解使其比应用速度快得多的内部工作原理是什么?
\n\n我知道这与 numpy 中的矢量化有关,numpy 是 pandas 数据帧的基本实现。但是导致列表推导式比 apply 更好的原因不太理解,因为在列表推导式中,我们在列表内给出 for 循环,而在 apply 中,我们甚至不给出任何 for 循环(我假设还有向量化发生)
\n\n编辑:\na添加代码:\n这是在泰坦尼克号数据集上工作,其中标题是从名称中提取的:\n https://www.kaggle.com/c/titanic/data
\n\n%timeit train[\'NameTitle\'] = train[\'Name\'].apply(lambda x: \'Mrs.\' if \'Mrs\' in x else \\\n (\'Mr\' if \'Mr\' in x else (\'Miss\' if \'Miss\' in x else\\\n (\'Master\' if \'Master\' in x else \'None\'))))\n\n%timeit train[\'NameTitle\'] = [\'Mrs.\' if \'Mrs\' in x else \'Mr\' if \'Mr\' in x else (\'Miss\' if \'Miss\' in x else (\'Master\' if \'Master\' in x else \'None\')) …Run Code Online (Sandbox Code Playgroud) 我在项目中使用 RabbitMQ,想知道是否应该使用具有多个路由键的单个交换器还是使用多个交换器?哪个会更有效率?
例如,如果我使用带有路由密钥 A、B、C 的单个交换机 E,并且消费者连接到该交换机 E 并使用 A、B、C 路由密钥获取数据。另一种选择是我应该将其发送到没有路由密钥的交换机 A、交换机 B、交换机 C,并且消费者可以连接到每个交换机以获取所需的数据。
python 库 pika 的示例(我当前正在使用):
channel.basic_publish(exchange='E',
routing_key='A',
body=data)
channel.basic_publish(exchange='E',
routing_key='B',
body=data)
channel.basic_publish(exchange='E',
routing_key='C',
body=data)
OR
channel.basic_publish(exchange='A',
routing_key='',
body=data)
channel.basic_publish(exchange='B',
routing_key='',
body=data)
channel.basic_publish(exchange='C',
routing_key='',
body=data)
Run Code Online (Sandbox Code Playgroud)