相关疑难解决方法(0)

将零填充到字符串的最好方法

使用零填充数字字符串的最Pythonic方法是什么,即数字字符串是否具有特定长度?

python string zero-padding

1309
推荐指数
15
解决办法
80万
查看次数

使用 Python 从 Unix 套接字连接读取和写入

我正在使用 Python 试验 Unix 套接字。我想创建一个创建并绑定到套接字、等待命令并发送响应的服务器。

客户端将连接到套接字,发送一个命令,打印响应并关闭连接。

这就是我在服务器端所做的:

# -*- coding: utf-8 -*-
import socket
import os, os.path
import time
from collections import deque    

if os.path.exists("/tmp/socket_test.s"):
  os.remove("/tmp/socket_test.s")    

server = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
server.bind("/tmp/socket_test.s")
while True:
  server.listen(1)
  conn, addr = server.accept()
  datagram = conn.recv(1024)
  if datagram:
    tokens = datagram.strip().split()
    if tokens[0].lower() == "post":
      flist.append(tokens[1])
      conn.send(len(tokens) + "")
    else if tokens[0].lower() == "get":
      conn.send(tokens.popleft())
    else:
      conn.send("-1")
    conn.close()
Run Code Online (Sandbox Code Playgroud)

但是socket.error: [Errno 95] Operation not supported当我试图倾听时我得到了。

unix 套接字支持监听吗?否则,阅读和写作的正确方法是什么?

任何帮助表示赞赏:)

python sockets unix-socket

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

创建共享内存Numpy ndarray,无需内存复制

I\xe2\x80\x99m 尝试创建 Numpy 数组,该数组可以被同一台机器上的其他进程极快地访问。经过大量研究和测试,我决定尝试使用 Python 3.8 共享内存来实现这一目标,希望使用共享内存可以允许以亚毫秒的速度在进程之间共享大型 numpy 数组。

\n

实现将是这样的:

\n
    \n
  • 在第一个 ipython shell 上(在第一个进程上):
  • \n
\n
import time\nimport numpy as np\nfrom multiprocessing.shared_memory import SharedMemory\n\narr = np.random.randint(0, 255, (5000, 5000, 4), dtype=np.uint8)\nshm = SharedMemory(create=True, size=arr.nbytes)\n\nshm_arr = np.ndarray(arr.shape, dtype=arr.dtype, buffer=shm.buf)\nshm_arr[:] = arr[:]\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 在第二个 ipython shell 上(在第二个进程上):
  • \n
\n
import numpy as np\nimport time\nfrom multiprocessing.shared_memory import SharedMemory\n\nshm = SharedMemory(name=\'test\')\nshm_arr = np.ndarray([5000, 5000, 4], dtype=np.uint8, buffer=shm.buf)\nshm.close()\n
Run Code Online (Sandbox Code Playgroud)\n

但这里有一个瓶颈。为了在第一个进程上创建共享 numpy 数组,我需要使用:

\n
shm_arr[:] = arr[:]\n
Run Code Online (Sandbox Code Playgroud)\n

这意味着有一个从arr到 的内存复制操作 …

numpy shared-memory multiprocessing python-3.8

5
推荐指数
0
解决办法
921
查看次数