gevent.os -- Low-level operating system functions from os#

来自的低级操作系统功能 os

合作I/O#

此模块提供 os.read()os.write() . 这些功能是 not 猴子修补了;你必须明确地称呼它们或猴子自己修补它们。

POSIX函数#

在POSIX上,无阻塞IO可用。

所有平台#

在非POSIX平台(如Windows)上,非阻塞IO不可用。在这些平台上(和posix上),可以使用threadpool完成协作IO。

子进程#

功能 fork() 和(在posix上) forkpty()waitpid() 可用于管理子进程。

警告

分叉使用greenlet的流程并不能消除所有未运行的greenlet。在父线程分叉线程的中心中调度的任何线程都将保留在子线程中调度的状态;将其与正常线程的运行方式进行比较。(此行为可能会发生变化,这是随后的主要版本。)

fork(*args, **kwargs)[源代码]#

分叉子进程并在父进程中为其启动子观察程序,以便 waitpid Sigchld按预期工作。

本次实施 fork 是包装 fork_and_watch() 当环境变量 GEVENT_NOWAITPIDnot 定义。这是默认值,大多数应用程序都应该使用它。

在 1.1b2 版本发生变更.

fork_and_watch(callback=None, loop=None, ref=False, fork=<function fork_gevent>)[源代码]#

派生子进程并在父进程中为其启动子观察程序。

这个电话与 waitpid() 使合作等待儿童完成。当猴子修补时,这些功能被修补为 os.fork()os.waitpid() ,分别。

在子进程中,此函数调用 gevent.hub.reinit() 返回前。

可用性:POSIX。

参数:
  • callback -- 如果给定,则当子级完成时将使用子级观察程序调用的可调用文件。

  • loop -- 启动监视程序的循环。默认为当前集线器的循环。

  • fork -- 叉子的功能。默认为 the one defined in this module (自动调用 gevent.hub.reinit() )。把车开过去 os.fork() 如果您不需要在子进程中初始化gevent,则使用函数。

在 1.1b1 版本加入.

参见

gevent.monkey.get_original() 进入内置设备 os.fork() .

fork_gevent()[源代码]#

分叉过程使用 os.fork() 并在返回前准备子进程继续使用gevent。

备注

此函数返回的PID不能与原始PID一起等待 os.waitpid() 或者这个模块的 waitpid() 如果libev儿童观察员正在使用或曾经使用过,它可能不会生成sigchld信号。例如, gevent.subprocess 模块使用libev子观察程序(gevent的哪些部分使用libev子观察程序可能随时更改)。大多数应用程序应该使用 fork_and_watch() ,它作为默认的 os.fork() 并实现 fork 默认情况下,此模块的函数,除非环境变量 GEVENT_NOWAITPID 在导入此模块之前定义。

在 1.1b2 版本加入.

forkpty(*args, **kwargs)[源代码]#

喜欢 fork() ,但使用 forkpty_gevent() .

本次实施 forkpty 是包装 forkpty_and_watch() 当环境变量 GEVENT_NOWAITPIDnot 定义。这是默认值,大多数应用程序都应该使用它。

在 1.1b5 版本加入.

forkpty_and_watch(callback=None, loop=None, ref=False, forkpty=<function forkpty_gevent>)[源代码]#

喜欢 fork_and_watch() ,除非使用 forkpty_gevent() .

可用性:一些Unix系统。

在 1.1b5 版本加入.

forkpty_gevent()[源代码]#

分叉过程使用 os.forkpty() 并在返回前准备子进程继续使用gevent。

返回一个元组(pid,master_fd)。这个 master_fdnot 进入非阻塞模式。

可用性:一些Unix系统。

参见

此功能与 fork_gevent() .

在 1.1b5 版本加入.

make_nonblocking(fd)[源代码]#

放置文件描述符 fd 如果可能,进入非阻塞模式。

返回:

一个布尔值,如果成功,其计算结果为真。

nb_read(fd, n)[源代码]#

读到 n 来自文件描述符的字节 fd . 返回包含已读取字节的字节字符串,该字符串可能短于 n . 如果到达文件结尾,则返回空字符串。

描述符必须处于非阻塞模式。

nb_write(fd, buf)[源代码]#

从缓冲区写入一些字节数 buf 到文件描述符 fd . 返回写入的字节数,可能小于 buf .

文件描述符必须处于非阻塞模式。

tp_read(fd, n)[源代码]#

读到 n 来自文件描述符的字节 fd . 返回包含已读取字节的字符串。如果到达文件结尾,则返回空字符串。

使用threadpool读取。

tp_write(fd, buf)[源代码]#

从缓冲区写入字节 buf 到文件描述符 fd . 返回写入的字节数。

使用threadpool完成写入。

waitpid(pid, options)[源代码]#

等待子进程完成。

如果子进程是使用 fork_and_watch() ,则此函数将协同工作。如果没有,它 may 具备比赛条件;参见 fork_gevent() 更多信息。

这些参数是关于基础的 os.waitpid() . 一些组合 选项 不可合作支持(从1.1开始,包括Wuntracted)。使用 pid 0的请求仅等待来自当前进程组的进程不协作。A pid of-1等待任何子节点是非阻塞的,但是可能需要或不需要绕事件循环进行一次跳闸,这取决于是否有任何子节点已经终止但尚未等待。

可用性:POSIX。

在 1.1b1 版本加入.

在 1.2a1 版本发生变更: 更多的案件以合作的方式处理。