会编程的人都知道,if-else
语句是相斥执行的,如果满足了if
中的条件,就不能执行else
中的内容;如果执行了else
中的内容,一定不会满足if
条件,所以if
和else
是不会同时执行的。
语句pid=os.fork()
,会为当前进程产生一个子进程并返回两个值,为父进程返回子进程的进程ID,为子进程返回0。
想要if
和else
都执行,就可以使用os
模块的fork
方法。把if 条件设定为fork
方法返回的值是否为0,如果设置为等于0,那么就会出现主程序不满足if
条件,执行else
中代码块,子进程满足if
条件,执行if
中代码块的情况,这样if
和else
中的代码块就都会执行。
通过下面这个小案例证明上述描述:
import os
pid = os.fork()
print(pid)
if pid == 0:
# os.getid()获取当前进程ID
print(os.getpid())
print('hello')
else:
print(os.getpid())
print('goodbye')
执行结果:
1938 # 主进程中fork返回的值:子进程ID
1937 # 主进程ID
goodbye
0 # 子进程中fork返回的值:0
1938 # 子进程ID
hello
注意:
os.fork()
方法只在Linux、Mac、Unix系统中才能使用。