Python 多线程(03)

线程替代方案

subprocess
完全跳过线程使用进程
是派生进程的主要替代方案
multiprocession
使用threading接口派生,使用子进程neg
concurrent.futures
新的异步执行模块,任务级别的操作

多进程

进程间的通讯(IPC)

进程的创建

直接生成process实例对象
案例1

import multiprocessing
from time import sleep,ctime
def clock(interval):
    while True:
        print('the time is %s'%ctime())
        sleep(interval)
if __name__=='__main__':
    p=multiprocessing.Process(target=clock,args=(5,))
    p.start()

派生子类
案例2

import multiprocessing
from time import sleep,ctime
class ClockProcess(multiprocessing.Process):
    def __init__(self,interval):
        super().__init__()
        self.interval=interval
    def run (self):
        while True:
            print('the time is %s'%ctime())
            sleep(self.interval)
if __name__=="__main__":
    p=ClockProcess(3)
    p.start()

在os中查看pid,ppid

案例3

from multiprocessing import Process
import os
def info(title):
    print(title)
    print('module name:',__name__)
    #得到父进程的id
    print('parent process:',os.getppid())
    #得到本身进程id
    print('process id :',os.getpid())
def f(name):
    info('function f')
    print('hello',name)
if __name__=='__main__':
    info("main_line")
    p=Process(target=f,args=('bob',))
    p.start()
    p.join()

运行结果如下:
main_line
module name: main
parent process: 7248
process id : 8740
function f
module name: mp_main
parent process: 8740
process id : 7420
hello bob

生产者消费者模型

JoinableQueue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值