多进程

作者: 程序设计法师 | 来源:发表于2019-04-04 09:37 被阅读0次
import time
import multiprocessing


def test1():
    while True:
        print("1.....")
        time.sleep(1)


def test2():
    while True:
        print("2....")
        time.sleep(1)


def main():
    p1 = multiprocessing.Process(target=test1)
    p2 = multiprocessing.Process(target=test2)
    p1.start()
    p2.start()


if __name__ == "__main__":
    main()
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/process/__init__.py
1.....
2....
1.....
2....
1.....
2....
1.....
2....
1.....
2....
1.....
2....
1.....
2....
1.....
2....
1.....
2....

Process finished with exit code -1
队列先进先出,与队列相反的是栈,先进后出
通过队列实现进程间通讯
import multiprocessing


def download_fromWeb(queue):
    # 从网上下载数据
    data = [11, 22, 33, 44]
    for temp in data:
        queue.put(temp)


def analysis_data(queue):
    # 从队列中取数据,放到list中
    waiting = list()
    while True:
        data = queue.get()
        waiting.append(data)
        if queue.empty():
            break
    print(waiting)


def main():
    # 创建一个队列
    queue = multiprocessing.Queue(6)

    # 创建多个进程将队列的引用传递到进程里面
    p1 = multiprocessing.Process(target=download_fromWeb, args=(queue,))
    p2 = multiprocessing.Process(target=analysis_data, args=(queue,))
    p1.start()
    p2.start()


if __name__ == "__main__":
    main()
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/process/Queue.py
[11, 22, 33, 44]

Process finished with exit code 0
进程池
from multiprocessing import Pool
import time, os, random


def worker(po):
    t_start = time.time()
    print("%s开始执行,进程号为%d" % (po, os.getpid()))


def main():
    # 定义一个进程池,最大进程数3
    po = Pool(3)
    for i in range(0, 10):
        # Pool().apply_async(要调用的目标,(传递给目标的参数元祖,))
        # 每次循环将会用空闲出来的子进程去调用目标
        po.apply_async(worker, (i,))
    # 关闭进程池,关闭后po不再接收新的请求
    po.close()
    # 等待po中所有子进程执行完成,必须放在close之后
    po.join()


if __name__ == "__main__":
    main()
E:\python_project\NetWork\venv\Scripts\python.exe E:/python_project/NetWork/process/ProcessPool.py
0开始执行,进程号为10712
1开始执行,进程号为10712
2开始执行,进程号为10712
3开始执行,进程号为10712
4开始执行,进程号为10712
5开始执行,进程号为10712
6开始执行,进程号为10712
7开始执行,进程号为10712
8开始执行,进程号为10712
9开始执行,进程号为10712

Process finished with exit code 0

相关文章

  • UNIX基础--进程和守护进程

    进程和守护进程 Processes and Daemons 进程(Processes) FreeBSD 是一个多任...

  • rsync服务企业应用

    守护进程服务企业应用: 守护进程多模块功能配置 守护进程的排除功能实践 守护进程来创建备份目录 守护进程的访问控制...

  • Nginx 的进程结构,你明白吗?

    Nginx 进程结构 这篇文章我们来看下 Nginx 的进程结构,Nginx 其实有两种进程结构: 单进程结构 多...

  • 进程/线程

    进程和线程 多任务的介绍 进程的介绍 多进程完成多任务 获取进程编号 进程的注意点 文件夹高并发copy器 1、多...

  • 多易日记进程

    10.29 解决移动端适配问题:采用手淘写的lib-flexible解决移动端的适配,采用pxToRem解决px转...

  • 使用ipc为 electron 实现一个无用的通信轮子

    入门学习electron时了解到,渲染进程与主进程存在一对多的关系, 渲染进程与主进程需要通过ipc或remote...

  • mysql(三)

    MySQL多实例 什么是实例? 一个进程+多个线程+预分配的内存结构 什么是多实例? 多个进程+多个线程+多个预分...

  • 线程和线程池

    线/进程、多线/多进程、线程并发/并行 一、线程、进程概念 进程:是程序的一次运行活动,由系统资源分配和调度的一个...

  • Python札记52_进程和线程2

    在之前的札记Python札记50_进程和线程1中介绍了进程、线程和子进程以及多进程的相关知识,本札记中重点介绍多线...

  • 5. python多进程锁-实现简易抢票

    一、主题 Lock类与RLock类相同:由于进程之间随机调度:某进程可能执行n条后,CPU接着执行其他进程。为了多...

网友评论

      本文标题:多进程

      本文链接:https://www.haomeiwen.com/subject/kfoxiqtx.html