如何在windows上使用os.fork运行python脚本?

2024-06-02 06:17:19 发布

您现在位置:Python中文网/ 问答频道 /正文

os.fork()命令在windows下不受支持,并出现以下错误:

AttributeError: 'module' object has no attribute 'fork'

所以一般的问题是如何在Windows下运行包含对os.fork()调用的脚本?。我不介意使用一些只模拟行为和运行慢得多的东西,它只用于测试。我也不想改变脚本,因为它是第三方模块。

为了给您一个更广阔的视角,我尝试在Windows上使用模块rqa.k.aredis queue。最后,我将在heroku服务器上运行代码,这是一台Linux机器,但是在web应用程序的开发过程中,我使用的是Windows。


Tags: 模块no命令脚本objectoswindows错误
3条回答

在windows上,可以使用python安装cygwin。这个python安装将有支持os.fork()调用的os模块。

导入一个包装器,该包装器在名为fork的函数中有条件地包装适当的子流程调用,并将其添加到os命名空间中。

可能是联系供应商并指出os.fork不是您的首选选项。

在没有fork()的系统(如Windows)上模拟fork()是不容易的。如果代码只使用fork()exec启动新进程,则可以将其移植为使用subprocess。但是这个doesn't appear to be the case在rq中,所以您有几个选项:

  1. rq端口连接到Windows,或请其他人为您执行此操作。移植调用fork()的代码部分的最简单方法可能是使用multiprocessing模块。但是,您仍然需要替换依赖于Unix的代码的其他部分,例如在timeouts模块中使用signal.alarm()

  2. 在Cygwin下使用Python,它模拟一个完全功能的(尽管是slowwish)fork(),因此Cygwin Python有一个工作的os.fork()。注意,要获得os.fork(),您需要使用Cygwin构建的Python,比如Cygwin发布的Python,而而不是只需在Cygwin下运行普通的Windows Python。

  3. 在虚拟机上运行的Linux上测试应用程序。

在这些不愉快的选择中,我推荐最后一个。

相关问题 更多 >