python进程

 进程的定义和常用方法

import os
from multiprocessing import Process
from time import sleep

m = 1
list1 = []


def task1(s, name):
    global m
    while True:
        sleep(1)
        m += 1
        print("进程1", m)
        list1.append(str(m) + "task1")
        print(list1)
        print("------------>1", "进程号:{},进程名字:{},父进程号:{}".format(os.getpid(), name, os.getppid()))


def task2(s, name):
    while True:
        sleep(2)
        print("进程2", m)
        list1.append(str(m) + "task2")
        print(list1)
        print("------------>2", "进程号:{},进程名字:{},父进程号:{}".format(os.getpid(), name, os.getppid()))


if __name__ == '__main__':
    print(os.getpid(), "进程号:{},父进程号:{}".format(os.getpid(), os.getppid()))
    p1 = Process(target=task1, name="任务1", args=(2, "小明"))
    p1.start()
    print(p1.name)

    p2 = Process(target=task2, name="任务2", args=(1, "小尼"))
    p2.start()
    print(p2.name)

    print("~~~~~~~~~~~~~~~~~~~~~~~")

自定义进程

from multiprocessing import Process
from time import sleep


class MyPro(Process):
    n = 1

    def __init__(self, name):
        super().__init__()
        self.name = name

    def run(self):
        global n
        while True:
            print("{},自定义进程{}".format(self.name, self.n))
            self.n += 1


if __name__ == '__main__':
    pro = MyPro("小明")
    pro.start()

进程池(task,args)--非阻塞式

设置进程数量,进程复用

非阻塞式:

直接把任务添加给进程,不需要等待

import os
import time
from multiprocessing import Pool
from random import random


def task(task_name):
    print("开始做任务了:{}".format(task_name))
    start = time.time()
    time.sleep(random() * 2)
    end = time.time()
    print("任务{}用时:{},______>id:{}".format(task_name, (end - start), os.getpid()))


if __name__ == '__main__':
    pool = Pool(5)
    list1 = ["听音乐", "跑步", "看孩子", "打游戏", "散步", "洗衣服"]
    for i in list1:
        pool.apply_async(task, args=(i,))

    pool.close()
    pool.join()
    print("over~~~~~~~~~~~~~~~~~~~")

进程池(task,args,callback)

import os
import time
from multiprocessing import Pool
from random import random


def task(task_name):
    print("开始做任务了:{}".format(task_name))
    start = time.time()
    time.sleep(random() * 2)
    end = time.time()
    return "任务{}用时:{},______>id:{}".format(task_name, (end - start), os.getpid())


con = []


def func(n):
    con.append(n)


if __name__ == '__main__':
    pool = Pool(5)
    list1 = ["听音乐", "跑步", "看孩子", "打游戏", "散步", "洗衣服"]
    for i in list1:
        pool.apply_async(task, args=(i,), callback=func)

    pool.close()
    pool.join()

    for i in con:
        print(i)
    print("over~~~~~~~~~~~~~~~~~~~")

进程池(task,args)--阻塞式

import os
import time
from multiprocessing import Pool
from random import random

con = []


def task(task_name):
    print("{}---开始做任务,进程Id:{}".format(task_name, os.getpid()))
    start = time.time()
    time.sleep(random() * 2)
    end = time.time()
    print("{}任务结束了,用时{}".format(task_name, (end - start)))


if __name__ == '__main__':
    pool = Pool(5)
    list1 = ["洗衣服", "吃饭", "打豆豆", "喝酒", "喝饮料", "跑步"]
    for ll in list1:
        pool.apply(task, args=(ll,))

    pool.close()
    pool.join()
    print("---------------over")

进程间的通信

from multiprocessing import Queue
from multiprocessing import Process
from time import sleep


def down_load(queue):
    images = ['girl.jpg', 'boy.jpg', 'man.jpg']
    for image in images:
        print("正在下载{}".format(image))
        sleep(0.5)
        queue.put(image)


def getfile(queue):
    while True:
        try:
            file = queue.get(timeout=5)
            print("{}文件保存成功!".format(file))
        except:
            break


if __name__ == '__main__':
    queue = Queue(5)
    p1 = Process(target=down_load, args=(queue,))
    p2 = Process(target=getfile, args=(queue,))
    p1.start()
    p2.start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/112485.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FedAT:异步更新联邦学习方法

文章链接:FedAT: A Communication-Efficient Federated Learning Method with Asynchronous Tiers under Non-IID Data 发表会议: SC’21 (International Conference for High Performance Computing, Networking, Storage, and Analysis) 高性能计算,体…

网络套接字编程(二)

网络套接字编程(二) 文章目录 网络套接字编程(二)简易TCP网络程序服务端创建套接字服务端绑定IP地址和端口号服务端监听服务端运行服务端网络服务服务端启动客户端创建套接字客户端的绑定和监听问题客户端建立连接并通信客户端启动程序测试单执行流服务器的弊端 多进程版TCP网络…

scrapy-redis分布式爬虫(分布式爬虫简述+分布式爬虫实战)

一、分布式爬虫简述 (一)分布式爬虫优势 1.充分利用多台机器的带宽速度 2.充分利用多台机器的ip地址 (二)Redis数据库 1.Redis是一个高性能的nosql数据库 2.Redis的所有操作都是原子性的 3.Redis的数据类型都是基于基本数据…

攻防世界-web-bug

1. 问题描述 没有额外的描述,仅仅是这样的一个登录界面 但是,我们注意到有注册(Register)和找回密码(Findpwd)这俩按钮 注册界面如下:需要输入用户名,密码,生日及地址 …

自动曝光算法(第一讲)

序言 失业在家无事,想到以后换方向不做自动曝光了,但是自动曝光的工作经验也不能浪费了,准备写一个自动曝光的教学,留给想做自动曝光的小伙伴参考。笔者当时开发自动曝光没有按摄影的avtvevbvsv公式弄,而是按正确的增…

K-means(K-均值)算法

K-means(k-均值,也记为kmeans)是聚类算法中的一种,由于其原理简单,可解释强,实现方便,收敛速度快,在数据挖掘、聚类分析、数据聚类、模式识别、金融风控、数据科学、智能营销和数据运…

UML类图关系

1.依赖 依赖关系由箭头表示,含义为A类在类中用到了B类,如B类作为A类的属性、参数、返回值等都属于依赖关系。 2.泛化(继承) 泛化用三角箭头和直线表示,extend。 3.实现 实现用三角箭头和虚线表示,在…

Mac 配置环境变量

Mac 配置环境变量 修改配置文件 vim ~/.bash_profile i进入编辑模式. Esc:wq 保存文件 esc:q 退出 如:jdk环境变量配置 JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/HomeCLASSPATH$JAVA_HOME/lib/tools.jar:$JAVA_HOME/…

11月的『备考学习计划』+高效的作息时间表 超好用~

每日作息时间表 每天有三个时间段学习效率高 上午10点左右 下午4点左右 晚上8点-10点左右 坚持住了,学习效果事半功倍 有同感的同学 可以举举手🤚,点点赞💓 每日作息时间表 6:30-7:00起床 6:30---7:00是起床的最佳时刻&am…

Ubuntu自建git服务器

Ubuntu 安装 gitlab-ce sudo apt-get update sudo apt-get install gitlab-ce 安装成功 sudo apt-get install gitlab-ce 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列【新】软件包将被安装:gitlab-ce 升…

解决方案 | 便民提效,电子签助力医疗保障服务模式创新

2023年2月,中共中央、国务院印发了《数字中国建设整体布局规划》,并发出通知,要求各地区各部门结合实际认真贯彻落实。《规划》指出,提升数字化服务水平,加快推进“一件事一次办”,推进线上线下融合&#x…

呼叫中心的重要考核指标

呼叫中心在运营过程中越来越精细化,在信息化管理的时代,呼叫中心系统是必不可少的,而呼叫中心的管理人员为了提升运营效率,通常会根据业务目标设置各种业务的考核指标,而我也根据OKCC在呼叫中心项目运营过程中的经验&a…

Window下SRS服务器的搭建

---2023.7.23 准备材料 srs下载:GitHub - ossrs/srs at 3.0release 目前srs release到5.0版本。 srs官方文档:Introduction | SRS (ossrs.net) Docker下载:Download Docker Desktop | Docker 进入docker官网选择window版本直接下载。由…

中颖单片机SH367309全套量产PCM,专用动力电池保护板开发资料

方案总体介绍 整套方案硬件部分共2块板子,包括MCU主板,采用SH79F6441-32作为主处理器。MCU主板包括2个版本。PCM动力电池保护板采用SH367309。 软件方案采用Keil51建立的工程,带蓝牙的版本,支持5~16S电池。 硬件方案--MCU主板 MC…

Android开发知识学习——TCP / IP 协议族

文章目录 学习资源来自:扔物线TCP / IP 协议族TCP连接TCP 连接的建立与关闭TCP 连接的建立为什么要三次握手? TCP 连接的关闭为什么要四次挥手? 为什么要⻓连接? 常见面试题课后题 学习资源来自:扔物线 TCP / IP 协议…

Simulink HDL--如何生成Verliog代码

Simulink生成HDL的方法可以快速设计出工程,并结合FPGA验证,相比于手写HDL代码虽然存在代码优化不足的问题。但是方法适合做工程的快速验证和基本框架搭建。本文将介绍Simulink HDL生成Verliog代码的基本操作 1、逻辑分析仪功能 Simulink生成HDL前需要通…

想翻译pdf文档,试了几个工具对比:有阿里(完全免费,快,好用,质量高,不用注册登录)道最好(有限免费) 百度(有限免费)和谷歌完全免费(网不好)

文档翻释作为基础设施,工作必备。 阿里 (完全免费,快,好用,质量高,不用注册登录,无广告)我给满分 https://translate.alibaba.com/#core-translation 先选好语言。 Google(完全免…

数据结构和算法——用C语言实现所有图状结构及相关算法

文章目录 前言图的基本概念图的存储方式邻接矩阵邻接表十字链表临界多重表 图的遍历最小生成树普里姆算法(Prim)克鲁斯卡尔算法(Kruskal) 最短路径BFS求最短路径迪杰斯特拉算法(Dijkstra)弗洛伊德算法&…

03-对象

对象 对象1.对象的创建字面量模式构造函数模式 2.对象的访问3.新增删除对象中的属性4.Object显示类型转换(强制类型转换)ECMAScript中可用的3种强制类型转换如下:Boolean(value)String(value)Number(value)Object类型到Boolean类型Object类型转String类型转换规则&a…

leetcode-字符串

1.反转字符串LeetCode344. 20230911 难度为0,此处就不放代码了 注意reverse和swap等一系列字符串函数什么时候该用,记一记库函数 swap可以有两种实现,涨知识了,除了temp存值还可以通过位运算:s[i] ^ s[j]; s[j] ^ s[i…