Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 值对于定义的数据类型太大_Python_Linux - Fatal编程技术网

Python 值对于定义的数据类型太大

Python 值对于定义的数据类型太大,python,linux,Python,Linux,我正在从一个特殊设备读取数据,该设备的速度大约为20 MB/s /dev/dvb/adapter0/dvr0 我需要阅读内容并复制到其他FIFO device_fd = os.open(video_device_file, os.O_RDONLY) while True: if jobm.has_jobs(): chunk = os.read( device_fd, 1024 * 1000 ) fifom.wri

我正在从一个特殊设备读取数据,该设备的速度大约为20 MB/s

/dev/dvb/adapter0/dvr0
我需要阅读内容并复制到其他FIFO

    device_fd = os.open(video_device_file, os.O_RDONLY)
    while True:
        if jobm.has_jobs():
            chunk = os.read( device_fd, 1024 * 1000  )
            fifom.write2all(chunk)
        jobm.idle()
在运行了一整晚之后,我收到了以下错误:

[Errno 75]值对于定义的数据类型太大

在os.read行中

从谷歌看来,这似乎与c库和32位指针有关,但我看不出这会如何影响我的64位python版本


有什么建议吗?

我不知道你的
jobm
对象是什么,我假设它是你创建的,因为这是类似对象的唯一谷歌结果,如果我错了,请纠正我

您似乎正在打开视频设备进行读取,视频设备不断生成视频数据,而不是读取它,您处于空闲状态。您似乎没有将
设备\u fd
发送到您的jobm东西,因此它无法知道fd上是否有活动,因此它在您应该读取时处于休眠状态,这会造成缓冲区溢出

如果有可用的数据,您需要始终从设备读取数据。将fd发送到jobm,并使其利用
poll
select
查找其上的活动

编辑:对不起,我遗漏了你问题中的一个细节。我所说的仍然适用,但不是那么直接——你需要观察你的输入和输出,而不仅仅是你的输出,因为我已经说过了


如果FIFO无法处理输出,导致设备上的读数丢失,则会出现问题。您需要1)创建一个可容纳数百MB数据的缓冲区,以防管道写入延迟;2)丢弃数据包。如果某些数据丢失,DVB应用程序应该处理它。您也可以简单地捕获并忽略异常,尽管它会导致轻微的损坏和输出中的数据丢失。

我不知道您的
jobm
对象是什么,我假设它是由您创建的,因为这是类似对象的唯一谷歌结果,如果我错了,请纠正我

您似乎正在打开视频设备进行读取,视频设备不断生成视频数据,而不是读取它,您处于空闲状态。您似乎没有将
设备\u fd
发送到您的jobm东西,因此它无法知道fd上是否有活动,因此它在您应该读取时处于休眠状态,这会造成缓冲区溢出

如果有可用的数据,您需要始终从设备读取数据。将fd发送到jobm,并使其利用
poll
select
查找其上的活动

编辑:对不起,我遗漏了你问题中的一个细节。我所说的仍然适用,但不是那么直接——你需要观察你的输入和输出,而不仅仅是你的输出,因为我已经说过了


如果FIFO无法处理输出,导致设备上的读数丢失,则会出现问题。您需要1)创建一个可容纳数百MB数据的缓冲区,以防管道写入延迟;2)丢弃数据包。如果某些数据丢失,DVB应用程序应该处理它。您也可以简单地捕获并忽略异常,尽管它会导致轻微的损坏和输出中的数据丢失。

您的Python是为64位操作系统编译的吗?@nmichaels是的,它是@Ignacio+1好指针您的Python是为64位操作系统编译的吗?@nmichaels是的,它是@Ignacio+1好指针