python核心---多任务(Linux)

多任务(Linux环境下)

1.进程的创建
os.fork() 创建一个进程

import os
ret = os.fork() # 创建一个新的进程
print("haha")
结果为
haha
haha

import os
import time
ret = os.fork() # 创建一个返回值等于0的子进程,而父进程是一个大于0的值
if ret == 0:
    while True:
        print("---1---")
        time.sleep(1)
else:
    while True:
        print("---2---")
        time.sleep(1)
结果为:
---1---
---2---
---1---
---2---
---1---
---2---
---1---
---2---
....

os.getpid() # 获取父进程创建的子进程的id
os.getppid() #获取父进程的id

import os
ret = os.fork()
print(0)
if ret > 0:
    print("---父进程---%d" %os.getpid())
else:
    print("---子进程---%d--%d" %(os.getpid(), os.getppid()))
结果为
20570
---父进程---20569
0
---子进程---20570--20569

父进程中fork的返回值,就是刚刚创建出来的子进程的id
2.父子进程的先后顺序
父进程执行完,父进程结束,不会等待子进程结束完才结束

import os
import time

ret = os.fork()

if ret == 0:
    print("---子进程---")
    time.sleep(5)
    print(---子进程over---)
else:
    print("---父进程---")
    time.sleep(3)
print("over")
结果为
---父进程---
over
---子进程---

---子进程over---
over

3.多个进程中,数据不共享

import os
import time

g_num = 100
ret = os.fork()

if ret == 0:
    print("---process1---")
    g_num +=1
    print("---process1---%d" %g_num)
else:
    time.slepp(3)
    print("---process---")
    print("---process2---%d" %g_num)
结果为
---process1---
---process1---101
---process2---
---process2---100

4.多个fork
看入下代码

import os
import time

ret = os.fork()  # 创建了一个进程,现在有两个进程
if ret == 0:
    print("---1---")
else:
    print('---2---')
ret = os.fork()  # 两个进程分别创建了一个进程,现在有四个进程
if ret == 0:
    print('---11---')
else:
    print('---22---')

结果为:
---2---
---22---
---11---
---1---
---22---
---11---

再看如下代码

import os
import time

ret = os.fork()  # 创建了一个进程,现在有两个进程
if ret == 0:
    print("---1---")
else:
    print('---2---')
    ret = os.fork()  # 一个进程创建了一个进程,现在有三个进程
    if ret == 0:
        print('---11---')
    else:
        print('---22---')

结果为:
---2---
---22---
---1---
---11---

猜你喜欢

转载自blog.csdn.net/jian15093532273/article/details/79795482
今日推荐