python3 进程

开进程的两种方式:
1. 使用内置的进程

#!/usr/bin/env python
#coding:utf-8
#Created by Andy @ 2017/9/17

from multiprocessing import Process
import os

def get_id(name):
    print(name,"Main process:",os.getppid(),"current process;", os.getpid())

P1 = Process(target=get_id, args=(‘andy‘,))
P2 = Process(target = get_id, args=("Jack", ))

if __name__ == "__main__":
    P2.start()
    P1.start()

    print("主进程")

2. 自定义进程类:

from multiprocessing import Process
import os

class Custom_Process(Process):
    def __init__(self, name):
        super().__init__()
        self.name = name

    def run(self):
        print(self.name, "Main process:", os.getppid(), "current process;", os.getpid())

if __name__ == "__main__":

    P1 = Custom_Process(‘andy‘)
    P2 = Custom_Process("jack")

    P1.start()
    P2.start()
    print("主进程")

事实上在调用P1.start时,系统调用了Process类的run方法,在我们直接调用Process类时,

我们需要指定target(即要进行的操作,参数args),那么定制后我们重写了run方法,即重写的

run方法。

在Custom_Process类中我用到了

super().__init__()

这是重写父类的方法之一,另一种方法是:

Parent.__init__(self)

关于super().__init__()事实上并不是调用父类,而是寻找继承顺序中的下一个

具体可以参考:Python’s super() considered super!

时间: 2024-08-25 22:28:28

python3 进程的相关文章

python3 进程和线程

进程和线程 进程:内存独立,线程共享同一进程的内存 进程是资源的集合,线程是执行单位 进程之间不能直接互相访问,同一进程中的程可以互相通信 创建新进程消耗系统资源,线程非常轻量,只保存线程运行时的必要数据,如上下文.程序堆栈信息 同一进程里的线程可以相互控制,父进程可以控制子进程 1 import threading 2 import time 3 4 def sayhi(num): 5 print('num:',num) 6 time.sleep(3) 7 8 a = threading.Th

python3 进程池

进程池无IO堵塞的情况 # coding:utf-8 import time from multiprocessing import Process, Pool def func(n): pass if __name__ == '__main__': num = 10 start_pool_time = time.time() pool = Pool(5) pool.map(func, range(num)) # map是异步执行的,并且自带close和join print("通过进程池执行的时

python3 进程池版的socket并发聊天

Pool内的进程数默认是cpu核数,假设为4(查看方法os.cpu_count())开启6个客户端,会发现2个客户端处于等待状态在每个进程内查看pid,会发现pid使用为4个,即多个客户端公用4个进程tcp_server.py # coding:utf-8 import os import socket from multiprocessing import Pool def tcpserver(conn): while 1: from_client_msg = conn.recv(1024)

python3 进程池回调函数

# coding:utf-8 import os from multiprocessing import Pool def func1(n): print("func1[%s]" % os.getpid()) return n*n def func2(m): print("func2[%s] 接收到的参数是:" % os.getpid(), m) if __name__ == '__main__': print("主进程[%s]" % os.ge

Day10-线程进程

什么是进程? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本:进程是程序的一次执行活动,属于动态概念. 在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行.这是这样的设计,大大提高了CPU的利用率.进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的. 有了进程为什么还要线程? 进程有很多优点,它提供了

Python之路PythonThread,第三篇,进程3

python3 进程3 管道 在内存中开辟一个管道空间,对多个进程可见. 在通信形式上形成一种约束: linux 文件类型 b    c      d         -                l               s                      p 目录   普通文件  链接        套接字           管道 multiprocessing    -----> Pipe函数 Pipe(duplex) 功能:创建一个管道 参数:duplex 默认为T

Python之路PythonThread,第四篇,进程4

python3  进程4 进程间同步互斥方法: from multiprocessing import Lock 创建 进程锁对象 lock = Lock() lock.acquire()  给临界区上锁 lock.release() 给临界区解锁 说明:1,具体实现上 acquire() 为一个条件阻塞函数: 2,当有任意一个进程先进行了acquire操作后,其他进程再企图进行acquire操作时就会阻塞,直到lock对象被release后其他进程CIA可以进行下次 acquire操作: wi

python3自动安装脚本,python3.x与python2.x共存

1.前言: python3过程中,通过搜索一些文章参考安装过程发现比较麻烦,而且还出现一些不可预期的报错.python3环境需要升级openssl,所以为了部署到其他环境更方便,写自动安装脚本方式,且安装模式为python3.x与python2.x共存,防止可能发生原有环境异常的情况. 现在我把脚本分享出来,希望可以帮助到有需要的人,业务采集监控python脚本文件不提供,因为那些跟实际业务开发关联比较紧,比较没有参考意义也不方便公开. shell自动安装脚本,只需按说明简单修改配置,和调用集成

tornado+sqlalchemy+celery,数据库连接消耗在哪里

随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知.     最近老是发现数据库的连接数如果几天不重启服务器,就经常会发现有很多sleep很久的数据库连接,对数据库服务器的性能有较大的影响.所以需要知道我们的数据库连接到底是在哪里被创建的,什么时候会被复用,什么时候会被释放.     测试的时候使用的代码,适当进行调整,可帮助梳理清楚场景. from sqlalchemy.ext.decl