day24系统编程

1python系统编程

1.1进程


1.1.1多任务的引入

单任务:

多任务:

说明:

·程序执行到os.fork()时,操作系统会创建一个新的进程(子进程),然后复制父进程的所有信息到子进程

·然后父进程和子进程都会从fork()函数中得到一个返回值,在子进程中这个值一定是0,而父进程中是子进程的id号。

注意:子进程永远返回 0,而父进程返回 子进程的 I D。


1.1.1多次fork问题


这时候会产生四个进程。

多进程修改全局变量

打印的结果: 哈哈1---- num=1             哈哈2---- num=1

总结:多进程中,每个进程中所有数据(包括全局变量)都各有拥有一份,互      不影响。也就是说相当于有两个num。互不干扰。

                                         

1.1.1  getpid():获得这个进程的id

                    解释:哪个进程运行了这个代码,就获得这个进程编号的pid

          getppid():获得这个进程的父进程的id

                  解释:哪个进程运行了这个代码,就获得这个进程的父进程编号的pid

代码:

        import  os

        rpid = os.fork()

        if  rpid<0:

                  print("fork调用失败。")

         elif  rpid ==0:

                   print("我是子进程(%s),我的父进程是(%s)"%(os.getpid(),os.getppid()))

         else:

                    print("我是父进程(%s),我的子进程是(%s)"%(os.getpid(),rpid))

                     print("父子进程都可以执行这里的代码")

运行结果:

我是父进程(19360),我的子进程是(19361)

父子进程都可以执行这里的代码

我是子进程(19361),我的父进程是(19360)

父子进程都可以执行这里的代码。


1.1.1multiprocessing

Python是跨平台的,也提供一个跨平台的多进程。multiprocessing模块就是跨平台版本的多进程模块

multiprocessing模块提供了一个Process类来代表一个进程对象。


Process语法结构如下:

Process([group [, target [, name [, args [, kwargs]]]]])

·target:表示这个进程实例所调用对象;

·args:表示调用对象的位置参数元组;

·kwargs:表示调用对象的关键字参数字典;

·name:为当前进程实例的别名;

·group:大多数情况下用不到;

Process类常用方法:

·is_alive():判断进程实例是否还在执行;

·join([timeout]):是否等待进程实例执行结束,或等待多少秒;

·start():启动进程实例(创建子进程);

·run():如果没有给定target参数,对这个对象调用start()方法时,就将执行对象中的run()方法;

·terminate():不管任务是否完成,立即终止;

Process类常用属性:

·name:当前进程实例别名,默认为Process-N,N为从1开始递增的整数;

·pid:当前进程实例的PID值;

例子2: join()的作用

例子3: join(timeout)的作用

例子4:设置守护进程

例子5:多进程  唱歌跳舞

例子6:两个子进程.join()的运行顺序


例子7:两个子进程,一个设置成守护进程,对另一个不受影响。

1.1.1第二种实现多进程的方法:创建-Process子类

2、继承类创建的多进程的唱歌跳舞

两种方式的对比:

1、方法

2、继承类

继承类是以面向对象考虑这个事的,所以业务逻辑复杂,建议使用继承类,更好理解

1.1.1进程池Pool

apply_async非堵塞:  谁先运行完下一个接着上去。

apply堵塞:  一个运行完在运行下一个。

1.1.1进程间通信-Queue

Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信

可以使用multiprocessing模块的Queue实现多进程之间的数据传递

说明:

初始化Queue()对象时(例如:q=Queue()),若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接受的消息数量没有上限(直到内存的尽头);

·Queue.qsize():返回当前队列包含的消息数量;

·Queue.empty():如果队列为空,返回True,反之False;

·Queue.full():如果队列满了,返回True,反之False;


·Queue.get([block[, timeout]]):获取队列中的一条消息,然后将其从列队中移除,block默认值为True;    这里面可以加参数。


·Queue.get_nowait():相当Queue.get(False);

·Queue.put(item,[block[, timeout]]):将item消息写入队列,block默认值为True;

Queue.put_nowait(item):相当Queue.put(item, False);

例子2:

例子3:利用apply阻塞写完在读

例4:apply_async异步

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,423评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,339评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,241评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,503评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,824评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,262评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,615评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,337评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,989评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,300评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,829评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,193评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,753评论 3 230
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,970评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,708评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,295评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,207评论 2 258

推荐阅读更多精彩内容

  • 1.进程 1.1多线程的引入 现实生活中 有很多的场景中的事情是同时进行的,比如开车的时候手和脚共同来驾驶汽车,再...
    TENG书阅读 482评论 0 0
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,187评论 0 17
  • 这幅素描是前天晚上在“我家大厨房”吃饭时打的稿,第二天早上起来完成的。
    蜗小简阅读 141评论 0 0
  • 人的强大,除了自信,坚持, 还有一点非常重要:学会享受孤独。 无论是否有人理解体恤你的悲伤, 你都必须要学会与自己...
    xiao妃阅读 298评论 1 0
  • 刚刚学c基础的时候老师留的一道作业,想想当时一条路写下来,,,,不堪回首,最近有重写一份感觉比以前有进步,过段时间...
    隔壁班小明阅读 248评论 0 0