首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >与os.fork一起使用python

与os.fork一起使用python
EN

Stack Overflow用户
提问于 2017-02-07 07:59:20
回答 1查看 318关注 0票数 1

我很好奇是否在python规范中定义了with with os.fork的行为,以及我应该如何与os.fork一起使用。

如果我这样做了,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tempfile
import os
with tempfile.TemporaryDirectory() as dir:
  pid = os.fork()
  print(pid)
  print(dir)

然后,它似乎在使用删除TemporaryDirectory两次的天真行为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> python3 foo.py
27023
/tmp/tmpg1typbde
0
/tmp/tmpg1typbde
Traceback (most recent call last):
  File "foo.py", line 6, in <module>
    print(dir)
  File "/usr/lib/python3.4/tempfile.py", line 824, in __exit__
    self.cleanup()
  File "/usr/lib/python3.4/tempfile.py", line 828, in cleanup
    _rmtree(self.name)
  File "/usr/lib/python3.4/shutil.py", line 467, in rmtree
    onerror(os.rmdir, path, sys.exc_info())
  File "/usr/lib/python3.4/shutil.py", line 465, in rmtree
    os.rmdir(path)
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpg1typbde'

我想知道:

  1. 如果行为是实际定义的
  2. 如何最好地在两个进程之间共享一个临时目录
EN

回答 1

Stack Overflow用户

发布于 2017-02-07 08:31:05

不使用与,并这样做肮脏的老方式起作用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> cat foo.py
import tempfile
import os
import shutil
temp_dir = tempfile.mkdtemp(prefix="foo")
pid = os.fork()
print(pid)
print(temp_dir)
if not pid:
  input("pid: %s\nPress enter to continue."%pid)
if pid:
  print("pid: %s\nWaiting for other pid to exit."%pid)
  os.waitpid(pid,0)
  shutil.rmtree(temp_dir)
  print("Bye")

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> python3 foo.py
27510
/tmp/foopyvuuwjw
pid: 27510
Waiting for other pid to exit.
0
/tmp/foopyvuuwjw
pid: 0
Press enter to continue.
Bye
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42094399

复制
相关文章
Python 使用 os.fork() 创建子进程
Linux 操作系统提供了一个 fork() 函数用来创建子进程,这个函数很特殊,调用一次,返回两次,因为操作系统是将当前的进程(父进程)复制了一份(子进程),然后分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的 PID。我们可以通过判断返回值是不是 0 来判断当前是在父进程还是子进程中执行。 在 Python 中同样提供了 fork() 函数,此函数位于 os 模块下。 下面是一个例子 import os import time print "Before fork process p
kongxx
2018/05/14
1.8K0
python 多个with 语句一起使用
这样写每个with语句需要缩进一次,阅读起来逻辑不连续,而且很容易超过每行的字符限制,导致需要换行等问题,不是很方便。
王云峰
2023/10/23
3760
【译】与Adapter一起使用(ListView, GridView, ...)
首先,我们需要为测试提供一些图像。我们从eatfoody.com截取了部分美味的食谱图,上传至imgur。
小鄧子
2018/08/20
1.2K0
如何将Redux与React Hooks一起使用
React Redux在2019年6月11日发布的7.1版中提供了对Hooks的支持。这意味着我们可以在函数组件中将Redux与Hooks一起使用,而不是使用高阶组件(HOC)。
前端知否
2020/03/23
7K0
如何将Redux与React Hooks一起使用
MySQL中group by 与 order by 一起使用排序问题
没有得到我们需要的结果,这是因为group by 和 order by 一起使用时,会先使用group by 分组,并取出分组后的第一条数据,所以后面的order by 排序时根据取出来的第一条数据来排序的,但是第一条数据不一定是分组里面的最大数据。
星哥玩云
2022/08/18
1.8K0
MySQL中group by 与 order by 一起使用排序问题
SwiftUI:alert() 和 sheet() 与可选值一起使用
SwiftUI有两种创建警报和表单的方式,到目前为止,我们仅使用一种方法:绑定到布尔值,该布尔值在变为 true 时显示 Alert 或 Sheet。
韦弦zhy
2021/01/18
2.5K0
如何让R与Python一起工作 | 案例讲解
R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具。通俗点说,R是用来做统计和画图的。R拥有自己的脚本语言和大量的统计、图形库(得益于开源社区),这让她看起来既美又实用。与其他同类软件(如 SPSS)相比,R的特点是纯命令行的,这倒也好,我们更应该把注意力放在数据本身,而非统计工具的UI。
1480
2020/01/16
1.9K0
如何让R与Python一起工作 | 案例讲解
跟我一起hadoop(1)-hadoop2.6安装与使用
伪分布式 hadoop的三种安装方式: Local (Standalone) Mode Pseudo-Distributed Mode Fully-Distributed Mode 安装之前需要 $ sudo apt-get install ssh      $ sudo apt-get install rsync 详见:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html 伪分布
cloudskyme
2018/03/20
1.7K0
跟我一起hadoop(1)-hadoop2.6安装与使用
Python模块整理(六):守护进程
守护进程三个特征:在后台运行,与启动它的进程脱离,无须控制终端。 >>> def run(program, *args): ...     pid = os.fork() ...     if pid==0:#pid==0为在子进程内 在子进程内,执行(等同于 not pid (not 0)) ...             os.execvp(program, (program,) +  args) ...     return os.wait() ... >>> run("python"
py3study
2020/01/10
6920
python之多进程fork
 python中实现多进程是通过os.fork()这个函数来实现,这个函数和操纵系统本身结合的非常紧密,windows下就无法使用os.fork()这个函数。python中的os.fork()被调用后就会立即生成一个子进程,是通过copy父进程的地址空间和资源来实现子进程的创建,同时这个函数在子进程中返回的是0,在父进程中返回的是子进程的PID。子进程在结束父进程还未结束的时候,子进程这段时间是处于Zombie状态,可以通过ps命令查看到进程的状态,Zombie的目的是为了在子进程结束的时候可以保存一些结束信息供父进程来收集。
py3study
2020/01/07
1.1K0
我们一起使用MockServer
上一篇文章已经介绍了MockServer的基本目录,将对应的文件放置到自动化项目中即可:
用户5521279
2020/06/04
9380
我们一起使用MockServer
python gflags介绍与使用
2.下载setuptools并安装,地址为:http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg
py3study
2020/01/07
1.4K0
官方支持, Excel与Python终于真在一起了!
如果要进行大规模数据处理,很多人都会告诉你可以使用 Python,它是当今最流行的编程语言之一。但在专用于处理数据的 Excel 上我们却一直只能用 VBA。这么多年,为什么官方还不出来改进一下?
数据STUDIO
2023/09/04
7440
官方支持, Excel与Python终于真在一起了!
GitHub不再允许“RSA密钥与SHA-1一起使用”
算是小问题吧,就是不知道什么时候开始,GitHub不允许“RSA密钥与SHA-1一起使用“了。
Cikian.
2022/09/22
1.5K0
[python]一起学python(1
跟很多前端工作者一样,我也常常打听。作为前端,在要懂js的前提下,还要可以学什么其他语言来增加自己的竞争力。 我看到最多的是node,很多人说前端真正的学好node。已经可以胜任很多工作了。假如想学后端java是需求最大的。 不过目前来说java的学习成本很高,相对python是一门很好入门的语言,最近也是很火。 所以我想用一小段时间,快速了解一下python。(本文用的是python3.x)
py3study
2020/01/03
5360
Mybatis在接口上使用注解配置SQL语句以及接口与xml一起使用
MyBatis对于大部分的基于XML的映射器元素(包括&lt;select&gt;,&lt;update&gt;)提供了对应的基于注解的配置项。然而在某些情况下,基于注解配置 还不能支持基于XML的一些元素。MyBatis提供了多种注解来支持不同类型的语句(statement)如SELECT,INSERT,UPDATE,DELETE。下面我们通过一个小demo来简单演示一下这些基本注解的使用方式:
端碗吹水
2020/09/23
2.6K0
Mybatis在接口上使用注解配置SQL语句以及接口与xml一起使用
与红帽工程师一起使用 OCM 管理多云集群
在提倡数字化转型的时代背景下,企业业务快速发展,跨区域的多云集群成为数据中心建设的基础架构,多区域容灾与多活、大规模多集群管理、跨云弹性与迁移等需求场景随之出现,如何统一管理多云多集群下的 Kubernetes 应用,将云原生下沉实现云边端一体化,成为了国内外技术厂商和云原生社区努力实现的目标。
CNCF
2021/11/30
9850
与红帽工程师一起使用 OCM 管理多云集群
如何将CocoaPods与多个Framework子项目一起使用
假设主项目是MAIN_APP,两个子项目是FRAMEWORK_A和FRAMEWORK_B。
freesan44
2019/10/12
4K0
【一起学python】print 语句
联盟有个小伙伴,为了督促自己学习进步,决定把自己以前学的python重新梳理下,并且以文章的方式展示出来,联盟专门做一起学python系列专栏,鼓励这位小伙伴学习,也欢迎大家监督,也欢迎后续的小伙伴参与进来,一起学习,互相鼓励,传播正能量。 在hello world程序中,用到的最核心的语句就是print语句,由于python比较灵活的语法,所以,print语句的写法比较灵活,当然也比较麻烦,麻烦到敲语句的时候你心里都没数,print语句在python2.x和python3.x系列中是有区别的,分开介绍一下
程序员互动联盟
2018/03/16
6900
【一起学python】print 语句
python fork()多进程
fork()是一个绝对唯一的调用。Python中的大多数函数会之返回一次,因为sys.exit()会终止程序,所以它就不会返回。相比之下,Python的os.fork()是唯一返回两次的函数,任何返回两次的函数,在某种意义上,都可以调用os.fork()来实现。在调用fork()之后,就同时存在两个正在运行程序的拷贝。但是第二个拷贝并不是从开始就重新开始的。两个拷贝在对fork()调用后会继续——进程的整个地址空间被拷贝。这时可能会出现错误,而os.fork()可以产生异常。
py3study
2020/01/09
2.2K0

相似问题

Python:何时使用pty.fork()与os.fork()

31

Python + webkit + os.fork()

10

Python - os.fork()失败

11

python os.fork是否使用相同的python解释器?

30

开始Python os.fork输出

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文