美文网首页
进程和线程

进程和线程

作者: XYZ7 | 来源:发表于2017-02-26 00:24 被阅读0次

Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。

子进程永远返回0,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID。

Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程:

import os

print('Process (%s) start...' % os.getpid())
# Only works on Unix/Linux/Mac:
pid = os.fork()
if pid == 0:
    print('I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid()))
else:
    print('I (%s) just created a child process (%s).' % (os.getpid(), pid))
# 运行结果如下:
Process (876) start...
I (876) just created a child process (877).
I am child process (877) and my parent is 876.

# multiprocessing
from multiprocessing import Process
import os

# 子进程要执行的代码
def run_proc(name):
    print('Run child process %s (%s)...' % (name, os.getpid()))

if __name__=='__main__':
    print('Parent process %s.' % os.getpid())
    p = Process(target=run_proc, args=('test',))
    print('Child process will start.')
    p.start()
    p.join()
    print('Child process end.')

相关文章

  • 线程和进程概念

    线程和进程 进程 线程 线程和进程的区别

  • 17_多线程

    =================线程和进程 =============进程 =============线程 ==...

  • OC-底层原理 23:多线程原理

    本文的目的在于了解进程、线程、多线程、线程池等的基本概念及原理 线程 和 进程 线程和进程的定义 线程 线程时进程...

  • iOS 多线程原理

    本文的目的在于了解进程、线程、多线程、线程池等的基本概念及原理 线程 和 进程 线程和进程的定义 线程 线程时进程...

  • 线程

    线程和进程 进程 线程 线程和进程的区别 线程的好处和坏处 创建线程的方式一 线程中常用的方法 代码实例 创建线程...

  • iOS底层原理24:多线程原理

    本文的目的在于了解进程、线程、多线程、线程池等的基本概念及原理 线程和进程 线程和进程的定义 线程 线程是进程的基...

  • 多线程

    线程和进程的概念: 进程:正在运行的应用就是一个进程线程:进程中执行每个任务的是线程 进程和线程的关系: 一个进程...

  • 面试复习——Android工程师之Java面试题

    1、进程和线程 地址空间和其他资源:进程间相互独立,进程中包括多个线程,线程间共享进程资源,某进程内的线程在其他进...

  • 多线程介绍

    线程和进程 线程和进程的定义 线程:线程是进程的基本执行单元,一个进程的所有任务都在线程中执行进程要想执行任务,必...

  • 多线程编程GCD(基础知识)

    GCD 多线程编程 1.线程和进程 1.1 线程:线程是进程的基本单元,进程中所有要执行的任务,都在线程和进程中执...

网友评论

      本文标题:进程和线程

      本文链接:https://www.haomeiwen.com/subject/nkbnwttx.html