小编KPM*_*KPM的帖子

Python多处理性能仅随使用的核心数的平方根而提高

我试图在Python(Windows Server 2012)中实现多处理,并且无法实现我期望的性能提升程度.特别是,对于几乎完全独立的一组任务,我希望通过额外的内核进行线性改进.


我理解 - 尤其是在Windows上 - 开启新流程涉及开销[1],底层代码的许多怪癖可能会妨碍干净的趋势.但理论上,对于完全并行化的任务,趋势最终仍应接近线性[2] ; 如果我正在处理部分连续任务[3],或者可能是后勤.

但是,当我在主要检查测试函数(下面的代码)上运行multiprocessing.Pool N_cores=36时,在我进入预期性能之前,我得到了一个近乎完美的平方根关系(我服务器上的物理核心数)额外的逻辑核心.


是我的性能测试结果图: 在此输入图像描述
(" 归一化性能 "是[具有1个 CPU核心的运行时间]除以[具有N个 CPU核心的运行时间]).

通过多重处理使收益大幅减少是否正常?或者我错过了实施的内容?


import numpy as np
from multiprocessing import Pool, cpu_count, Manager
import math as m
from functools import partial
from time import time

def check_prime(num):

    #Assert positive integer value
    if num!=m.floor(num) or num<1:
        print("Input must be a positive integer")
        return None

    #Check …
Run Code Online (Sandbox Code Playgroud)

python windows performance multiprocessing parallelism-amdahl

10
推荐指数
1
解决办法
679
查看次数

如何使用系统时钟从 gstreamer 获取时间戳?

我目前设置了两个命令行管道,用于通过以太网将视频从 Raspberry Pi 相机(ArduCam 模块)传输到 PC;这些工作得很好:

gst-sender.sh

./video2stdout | gst-launch-1.0 -v fdsrc fd=0 ! \
video/x-h264, width=1280, height=800, framerate=60/1 ! \
h264parse ! rtph264pay ! \
udpsink host=xxx.xxx.xx.xxx port=xxxx
Run Code Online (Sandbox Code Playgroud)

gst-receiver.sh

gst-launch-1.0 -v -e udpsrc port=xxxx \
caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, \
encoding-name=(string)H264, payload=(int)96" ! \
rtph264depay ! h264parse ! mp4mux ! filesink location=video.mp4
Run Code Online (Sandbox Code Playgroud)

但是,我最终将运行多个摄像机,通过外部硬件触发器同步,并且由于我无法保证流将同时开始,因此我需要时间戳 - 无论是流开始时间还是每一帧。

通过在 gst-sender.sh 中的 h264parse 和 rtph264pay 之间添加“identity silent=false”,我可以访问流的缓冲区数据,并使用以下命令检索帧时间戳:

./gst-sender.sh | grep -oP "(?<=dts: )(\d+:){2}\d+.\d+"
Run Code Online (Sandbox Code Playgroud)

但是这些时间戳是相对于流的开始的,所以我不能用它们来排列多个流中保存的视频!

Start video encoding...
0:00:00.000000000
0:00:00.016666666
0:00:00.033333332
0:00:00.049999998
0:00:00.066666664
0:00:00.083333330
0:00:00.099999996 …
Run Code Online (Sandbox Code Playgroud)

command-line synchronization gstreamer

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

是否有可以对有限状态机进行时间逻辑模型检查的 Python 包?

我希望能够将系统建模为有限状态机,并根据时间逻辑规范测试模型的属性。

我知道 StateFlow 的模型检查功能,但如果可能的话,我更愿意使用 Python,因为它是开源的。我也知道 TuLiP 是设计和模拟有限状态机的可靠选择,但据我所知,它不进行模型检查。Python wiki 上的 FSM 包列表似乎充满了类似的以实现为中心的包。

有谁知道一个不同的 Python 包,它能够根据时间逻辑设计规范进行模型检查?

python model-checking state-machine

3
推荐指数
1
解决办法
731
查看次数