2010-05-27 66 views
0

我试图手动创建与python中的套接字关联的文件描述符,然后直接使用mmap将其加载到内存中。使用mmap将文件创建到内存很简单,但我找不到将文件与套接字关联的方法。在python中更改套接字的文件描述符


感谢您的回复。

我的问题是我无法为python(或操作系统)制作更多的套接字我得到错误:“[errno 24]打开的文件过多”。

我认为错误是因为我无法在磁盘上创建更多文件描述符,所以我想在内存中创建它们。为了避免这种限制。

有什么建议吗?

回答

1

为什么你要使用mmap加载到内存中?如果你使用的是unix版本,你可以创建一个unix套接字,它是一个文件描述符,可以像其他套接字一样使用。套接字和内存映射文件是两个不同的实体 - 尝试混合它们可能不是一个好主意。

也许这会有所帮助,退后一步,讨论您在较高级别尝试做什么。

0

我极有可能会严重误解您的问题。你是否说有一个你想创建一个Python套接字对象的现有套接字文件?如果是这样,socket.fromfd()将复制fd并创建一个套接字对象。

http://docs.python.org/library/socket.html#socket.fromfd

编辑解决丹妮的职位

我想你误会文件描述符是如何工作的。 OS设置了一个限制。这与FD所指向的无关,所以mmap在这里不会帮助你(套接字不在磁盘上)。你可能只需要做更好的文件管理 - 当你完成它们时关闭文件。

如果您刚刚有确实需要,您可能需要增加开放FD的限制。这blog post有一个很好的例子,使用resource模块(* NIX-only)获取和设置打开的文件限制。 getrlimit man page有更多的使用信息。

相关问题