码迷,mamicode.com
首页 > 编程语言 > 详细

Python:多进程。

时间:2019-11-18 12:32:45      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:integer   它的   The   return   data   结束   教程   线程   注意   

参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017628290184064

 

Python程序实现多进程(multiprocessing)

 

了解linux的Fork系统调用(wiki)

计算机领域中,尤其是Unix类Unix系统操作系统中,fork(进程复制)是一种创建自身行程副本的操作。它通常是内核实现的一种系统调用。Fork是类Unix操作系统上创建进程的一种主要方法,甚至历史上是唯一方法。

在多任务操作系统中,行程(运行的程序)需要一种方法来创建新进程,例如运行其他程序。

如果进程需要启动另一个程序的可执行文件,它需要先Fork来创建一个自身的副本。然后由该副本即“子进程”调用exec系统调用,用其他程序覆盖自身:停止执行自己之前的程序并执行其他程序。

 

当一个进程调用fork时,它被认为是父进程,新创建的进程是它的孩子(子进程)。在fork之后,两个进程不仅运行着相同的程序,并且它们恢复执行(好像它们都已被系统调用)both processes not only run the same program, but they resume execution as though both had called the system call. 。然后它们可以检查调用的返回值确定其状态:是父进程还是子进程,以及据此行事。

 

Ruby的多进程处理模块Process

Ruby核心模块Process提供了大量和unix对应的接口方法。

fork[{block}] -> integer or nil

创建子进程。如果提供了block则会在子进程内运行。子进程终止会返回一个状态码0

调用fork会返回两次,一次是父进程,它返回孩子进程的ID; 另一次是孩子进程,返回nil。

孩子进程使用Kernel.exit!来退出。

父亲进程需要使用Process.wait来收集孩子进程的终止状态码。

 

exec([env,] command...[,options])

子进程调用exec方法,通过运行参数的命令取代当前进程。

 

pid -> integer

返回当前进程的id. Process.pid => 37415

 

ppid -> integer

返回当前进程的父进程的id.

  • puts "#{Process.pid}" Process.fork { puts "child_id:#{Process.pid}\nfather_id:#{Process.ppid}"}

 

  • 第一行代码输出当前进程的id
  • 第二行代码使用fork带一个块,块在子进程内运行,输出子进程自身的id, 和父进程的id,使用ppid方法,即parent process id。

 

多线程教程:https://www.runoob.com/ruby/ruby-multithreading.html


 

 

Python多进程

OS模块

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))

 

  • os.getpid()返回当前进程id
  • os.getppid()返回当前进程的父进程的id。

注意:Windows没有fork调用。

 

multiprocessing--Process-based parallelism

这个模块支持Win和Unix系统。

Process类

创建一个Process对象,然后调用它的start()方法。

join([timeout])方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步。

 

 

 

 

Python:多进程。

标签:integer   它的   The   return   data   结束   教程   线程   注意   

原文地址:https://www.cnblogs.com/chentianwei/p/11881180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!