多进程(multiprocessing)的用法和多线程(threading)类似,里面的函数也一样,start()为启动函数,join() 等待该进程运行结束,每一个进程也是由它的父进程产生

1.简单的多进程:

  1. import multiprocessing
  2. import threading
  3. import time
  4. ''' 进程的用法和线程类似 '''
  5.  
  6. def thread_run():
  7. ''' 线程的run函数 '''
  8. print("线程的ID",threading.get_ident()) #打印当前线程ID
  9.  
  10. def proce_run(name):
  11. ''' 进程的run函数 '''
  12. time.sleep(2)
  13. print("Hello %s"%name)
  14. t = threading.Thread(target=thread_run,)
  15. t.start() #进程中运行线程
  16.  
  17. if __name__ == "__main__":
  18. for i in range(5):
  19. p = multiprocessing.Process(target =proce_run,args=("process_%s"%i,))
  20. p.start() #启动进程

  运行结果:

  1. Hello process_0
  2. 线程的ID 6676
  3. Hello process_2
  4. 线程的ID 7876
  5. Hello process_3
  6. 线程的ID 8904
  7. Hello process_1
  8. 线程的ID 7268
  9. Hello process_4
  10. 线程的ID 8732

2.证明进程是由父进程产生的:

  1. from multiprocessing import Process
  2. import os
  3. ''' 子进程都是有父进程启动的 '''
  4.  
  5. def info(title):
  6. print(title)
  7. print("module_name",__name__) #模块名
  8. print("父进程",os.getppid()) #父进程的 PID
  9. print("当前进程",os.getpid()) #当前进程的 PID
  10. print("\n\n")
  11.  
  12. def pro_run(name):
  13. info(name)
  14.  
  15. if __name__ == "__main__":
  16. info("\033[32;1mmain process line\033[0m")
  17. p = Process(target=pro_run,args=("\033[31;1mcalled from child process function pro_run\033[0m",))
  18. p.start() #启动子进程

  运行结果 其中9204是pycharm产生的进程,8576是当前进程,5284是我们创建的进程:

  1. main process line
  2. module_name __main__
  3. 父进程 9204
  4. 当前进程 8576
  5.  
  6. called from child process function pro_run
  7. module_name __mp_main__
  8. 父进程 8576
  9. 当前进程 5284

  

Python3 多进程的更多相关文章

  1. Python3 多进程编程 - 学习笔记

    Python3 多进程编程(Multiprocess programming) 为什么使用多进程 具体用法 Python多线程的通信 进程对列Queue 生产者消费者问题 JoinableQueue ...

  2. Python3 多进程和多线程

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

  3. Python3多进程共享变量实现方法

    今天同事反映一个问题让帮忙看一下:多进程共用一个变量,在一个进程中修改后,在另外的进程中并没有产生修改. 一.错误的实现方式 最初以为是没添加global声明导致修改未生效,但实际操作发现global ...

  4. python3多进程爬虫(第一卷)

    进程这个东西概念很多人很模糊,而多进程并发爬虫也算是爬虫几大难点,现在我先说下进程的基本使用: 开启一个python文件 函数sayhi就是一个进程而且是主进程 现在呢我想循环输出NAME,n 正常我 ...

  5. python3多进程 进程池 协程并发

    一.进程           我们电脑的应用程序,都是进程,进程是资源分配的单位.进程切换需要的资源最大,效率低.         进程之间相互独立         cpu密集的时候适合用多进程 #多 ...

  6. python3多进程爬虫(第二卷)

    上卷中讲到,我有4个进程,可是我要同时爬取20+数据怎么办,很明显上卷的语法公式不可以,所以现在我引入线程池 现在看一下线程池的语法 看一下爬虫: 注意圈中重点

  7. python线程入门

    目录 python线程入门 线程与进程 线程 总结 参考 python线程入门 正常情况下,我们在启动一个程序的时候.这个程序会先启动一个进程,启动之后这个进程会启动起来一个线程.这个线程再去处理事务 ...

  8. python3全栈开发-并发编程,多进程的基本操作

    一 .multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程. ...

  9. Python3.x:实现多任务(多进程)

    Python3.x:实现多任务(多进程) # python3 # author lizm # datetime 2018-02-13 16:00:00 # -*- coding: utf-8 -*- ...

随机推荐

  1. js简易随机打乱数组方法

    打乱随机数算法很多,不过看这个还挺简便的,记录下来. function shuffle(a) { var len = a.length; for(var i=0;i<len;i++){ var ...

  2. Jstack、Jmap命令简单使用

    TOMCAT_ID为tomcat的进程号. 1.使用jstack查看jvm堆栈信息. /bin/ TOMCAT_ID:无法输出到单独的文件中,只能在tomcat的启动文件中打印相关的堆栈信息. jst ...

  3. 【刷题】BZOJ 2555 SubString

    Description 懒得写背景了,给你一个字符串init,要求你支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 你必须在线支 ...

  4. [NOI2016]优秀的拆分 后缀数组

    题面:洛谷 题解: 因为对于原串的每个长度不一定等于len的拆分而言,如果合法,它将只会被对应的子串统计贡献. 所以子串这个限制相当于是没有的. 所以我们只需要对于每个位置i求出f[i]表示以i为开头 ...

  5. 基于Memcached分布式系统DRDoS拒绝服务攻击技术研究(转)

    本次反射式拒绝服务攻击技术基于全球互联网分布式的Memcached服务器,需要储备一定得安全攻防知识,网络协议知识和python代码编程技术.希望在学习本篇文章知识前自行学习相关的基础知识,文章后面同 ...

  6. Codeforces 601D. Acyclic Organic Compounds(四个愿望一次满足)

    trie合并的裸题...因为最多只有n个点,所以最多合并n次,复杂度$O(N*26)$. #include<iostream> #include<cstring> #inclu ...

  7. CSK & KCF(tracking)

    转自:http://blog.csdn.net/ben_ben_niao/article/details/51364323 上次介绍了SRDCF算法,发展历史轨迹为CSK=>>KCF/DC ...

  8. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) F dfs序+树状数组

    Performance ReviewEmployee performance reviews are a necessary evil in any company. In a performance ...

  9. Codeforces 932.F Escape Through Leaf

    F. Escape Through Leaf time limit per test 3 seconds memory limit per test 256 megabytes input stand ...

  10. 【题解】Berland.Taxi Codeforces 883L 模拟 线段树 堆

    Prelude 题目传送门:ヾ(•ω•`)o Solution 按照题意模拟即可. 维护一个优先队列,里面装的是正在运营中的出租车,关键字是乘客的下车时间. 维护一个线段树,第\(i\)个位置表示第\ ...