相关疑难解决方法(0)

在块中迭代列表的最"pythonic"方法是什么?

我有一个Python脚本,它将整数列表作为输入,我需要一次使用四个整数.不幸的是,我无法控制输入,或者我将它作为四元素元组列表传入.目前,我正在以这种方式迭代它:

for i in xrange(0, len(ints), 4):
    # dummy op for example code
    foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]
Run Code Online (Sandbox Code Playgroud)

它看起来很像"C-think",这让我怀疑有更多的pythonic方式来处理这种情况.迭代后会丢弃该列表,因此无需保留.也许这样的事情会更好吗?

while ints:
    foo += ints[0] * ints[1] + ints[2] * ints[3]
    ints[0:4] = []
Run Code Online (Sandbox Code Playgroud)

但是,仍然没有"感觉"正确.: - /

相关问题:如何在Python中将列表拆分为大小均匀的块?

python optimization loops list chunks

449
推荐指数
15
解决办法
12万
查看次数

你如何刷新Python套接字?

我用Python编写了一个服务器,用于以"Header:Message"的形式向客户端发送数据

我希望能够单独发送每条消息,以便客户端需要执行最少的工作才能读取"标题"和"消息"

不幸的是,我无法弄清楚如何正确刷新python套接字,所以当我有多个发送快速连续执行时,消息在套接字缓冲区中被集中在一起并作为一个大块发送.

例:

服务器发送...

socket.send ("header1:message1")
socket.send ("header2:message2")
socket.send ("header3:message3")
Run Code Online (Sandbox Code Playgroud)

客户端收到..."header1:message1header2:message2header3:message3"

我想收到三条消息

header1:message1
header2:message2
header3:message3
Run Code Online (Sandbox Code Playgroud)

我需要一种方法在每次发送后进行刷新

python sockets flush

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

使用paramiko python ssh库通过xterm远程执行程序

该计划的流程是:

  1. 使用Paramiko库连接到Linux机器上的OpenSSH服务器
  2. 打开X11会话
  3. 运行xterm可执行文件
  4. 通过在终端中键入可执行文件名并运行它来运行其他程序(例如Firefox).

如果有人能够解释如何使用以下代码打开终端中运行某些可执行文件并提供示例源代码(源代码),我将不胜感激:

import select
import sys
import paramiko
import Xlib.support.connect as xlib_connect
import os
import socket
import subprocess



# run xming
XmingProc = subprocess.Popen("C:/Program Files (x86)/Xming/Xming.exe :0 -clipboard -multiwindow")
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(SSHServerIP, SSHServerPort, username=user, password=pwd)
transport = ssh_client.get_transport()
channelOppositeEdges = {}

local_x11_display = xlib_connect.get_display(os.environ['DISPLAY'])
inputSockets = []

def x11_handler(channel, (src_addr, src_port)):
    local_x11_socket = xlib_connect.get_socket(*local_x11_display[:3])
    inputSockets.append(local_x11_socket)
    inputSockets.append(channel)
    channelOppositeEdges[local_x11_socket.fileno()] = channel
    channelOppositeEdges[channel.fileno()] = local_x11_socket
    transport._queue_incoming_channel(channel)

session = transport.open_session()
inputSockets.append(session)
session.request_x11(handler = x11_handler)
session.exec_command('xterm')
transport.accept() …
Run Code Online (Sandbox Code Playgroud)

python x11 ssh multithreading paramiko

5
推荐指数
1
解决办法
1838
查看次数

标签 统计

python ×3

chunks ×1

flush ×1

list ×1

loops ×1

multithreading ×1

optimization ×1

paramiko ×1

sockets ×1

ssh ×1

x11 ×1