python中os.fork()方法
在Python中,如果我们希望并发的执行一些任务,最简单的办法是使用os下面的fork()方法,例如
import osprint("OSFork")contentStr = 'hello'pid = os.fork()
if pid == 0:contentStr = contentStr + ' child'print(contentStr)
else:contentStr = contentStr + ' parent'print(contentStr)print("over")
运行一下,打印结果如下
dengyuguodeMacBook-Air:python dengyuguo$ /usr/bin/python3 /Users/dengyuguo/Desktop/python/OSFork.py
OSFork
hello parent
over
hello child
over
第一次看到这种写法跟运行结果可能会感觉比较奇怪。实际上这里Python是借鉴了linux系统对多线程的实现,准确点说是多进程。
linux系统中,fork()方法会产生一个新的进程,并且和当前进程一起返回,差别是当前进程中会返回创建的子进程的pid,而子进程中返回的pid是0。后续的逻辑在两个进程中都会执行,我们能够通过返回的pid是否为0来判断代码是跑在子进程,还是当前进程。
数据问题,fork()函数执行后,子进程会共享父进程的内存空间,但是这个内存空间被标记为“写时复制”。所谓写时复制,指的是两个任务可以同时自由的读取内存,但任意一个任务试图对内存进行修改时,内存就会复制一份提供给修改方单独使用,以免影响到其他的任务使用。
理解了背后的设计逻辑,再看上面的代码,就感觉很清晰了。
python中os.fork()方法相关推荐
- python中os.fork()理解
import ospid = os.fork()if 0 > pid:print('调用出错') elif 0 == pid:print('我是子进程%s我的父进程是%s' % (os.getp ...
- Python中os和shutil模块实用方法集锦
Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...
- Python中sys.argv方法的一些典型用法
本文整理汇总了Python中sys.argv方法的典型用法代码示例. 示例1: weather_icons # 需要导入模块: import sys [as 别名] # 或者: from sys im ...
- Python中os库的使用
文章目录 Python中os库的使用 1. path子库 1.1 获取绝对路径 1.2 归一化path的表示形式 1.3 得到文件的相对路径 1.4 获取目录名 1.5 获取文件名 1.6 路径组合 ...
- python中os.path.join()的循环用法_Python os.path.join()用法及代码示例
Python中的OS模块提供了与操作系统进行交互的功能.操作系统属于Python的标准实用程序模块.该模块提供了使用依赖于操作系统的功能的便携式方法. os.path模块是Python中OS模块的su ...
- Python中os.listdir的排序问题
参考 Python中os.listdir的排序问题 - 云+社区 - 腾讯云 上周应别人要求,使用python批量修改文件名称. 文件名有规律,当时就用了一个函数直接精确的用文件名替换了.后来想直接 ...
- Python中图片处理方法 (总结)
Python中图片处理方法 -- 进阶 一级目录 1.Python中将源文件夹中图片复制到指定文件夹 2.Python中获取文件夹内指定后缀的所有文件的文件名 三级目录 一级目录 1.Python中将 ...
- python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法
python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录
- python使用方法-在Python中使用next()方法操作文件的教程
next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...
最新文章
- AI又被彩虹吹!​网易被预言为“下一个百度”?
- 【转载】Linux安装配置Qt
- 分享python os.system一点心得
- python函数修饰器_Python函数装饰器指南
- Android ToolBar的使用
- 视频监控技术 迎来网络“多媒体”时代
- LeetCode 1429. 第一个唯一数字(map+queue)
- nginx正向代理 反向代理
- 前端笔记—第4篇CSS基础知识2
- [Android Pro] 关于BitmapFactory.decodeStream(is)方法无法正常解码为Bitmap对象的解决方法...
- 软件接收机射频信号源matlab程序,射频信号源
- B站小甲鱼Python基础学习课堂笔记
- Mac软件打开提示:已损坏,无法打开。您应该将它移到废纸娄 怎么解决?
- SecureCRT 水平显示不全解决办法
- nginx 反向代理 ElasticSearch es
- 单片机教学打铃控制器C语言
- ResNeXt算法详解(resnet提升篇)
- 通过sql语句查询实现分页
- 前端笔记 (持续更新~)
- vue前端导出excel,js-xlsx、xlsxStyle,可设置样式、表格合并;(包含获取excel列数函数、excel合并表格缺少边框处理函数)