Python multiprocessing 多线程示例

发布时间: 更新时间: 总字数:345 阅读时间:1m 作者: 分享 复制网址

Python 多线程示例

介绍

多进程间通信,可以使用 multiprocessing 模块提供了 QueuePipes

  • os.fork() 创建子进程,如果返回值为0,则是子进程,否则是父进程
  • 由于 windows 平台不支持 fork 方法,所以python提供 multiprocessing 模块来跨平台多进程,multiprocessing 模块封装了 fork() 调用,multiprocessing模块提供Process类代表进程
    • 创建子进程时,只需要传入一个执行函数和函数的参数,创建一个Process实例,用 start() 方法启动
  • 如果要启动大量的子进程,可以用进程池的方式批量创建子进程,from multiprocessing import Pool

示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import time
import random
from multiprocessing import Pool


def sub_task(name):
    spid = os.getpid()
    print('run sub task name is {}, sub pid is {}...'.format(name, spid))
    start = time.time()
    time.sleep(random.random() * 3)
    end = time.time()
    print('sub task %s runs %0.2f seconds.' % (name, (end - start)))
    return spid


if __name__=='__main__':
    print('main process %s.' % os.getpid())
    p = Pool(4)
    results = []
    for i in range(10):
        r = p.apply_async(sub_task, args=(i,))
        results.append(r)
    print('Waiting for all subprocesses done...')

    for r in results:
        print("-- result {}".format(r.get()))
    p.close()
    p.join()
    print('All sub proceess done.')
最新评论
加载中...
Home Archives Categories Tags Statistics