python进程

 进程的定义和常用方法

import os
from multiprocessing import Process
from time import sleepm = 1
list1 = []def task1(s, name):global mwhile True:sleep(1)m += 1print("进程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 sleepclass MyPro(Process):n = 1def __init__(self, name):super().__init__()self.name = namedef run(self):global nwhile True:print("{},自定义进程{}".format(self.name, self.n))self.n += 1if __name__ == '__main__':pro = MyPro("小明")pro.start()

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

设置进程数量,进程复用

非阻塞式:

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

import os
import time
from multiprocessing import Pool
from random import randomdef 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 randomdef 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 randomcon = []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 sleepdef 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:breakif __name__ == '__main__':queue = Queue(5)p1 = Process(target=down_load, args=(queue,))p2 = Process(target=getfile, args=(queue,))p1.start()p2.start()

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python的网络编程一篇学透,使用Socket打开新世界

目录 1.网络概念 2.网络通信过程 2.1.TCP/IP 2.2.网络协议栈架构 3.TCP/IP介绍 3.1.ip地址 3.2.端口号 3.3.域名 4.Python网络编程 4.1.TCP/IP 4.2.socket的概念 4.3.Socket类型 4.4.Socket函数 4.5.Socket编程思想 5.客户端与服务器 5.1.tcp客户端 6.网络调试…

对比解析php和go对JSON处理的区别

一、go 转化php数组代码 php程序 $str <<<EOF {"操作源":"任意","数据库":"任意","语句类型":"CREATE DATABASE&#xff1b;DROP DATABASE&#xff1b;ALTER DATABASE","影响行数":"不…

stm32 定时器中断

目录 定时器分类 通用定时器框图 时钟源 内部时钟&#xff08;CK_INT&#xff09; 外部时钟模式 1&#xff08; TI1、 TI2&#xff09; 时钟信号输入引脚 滤波器 如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话&#xff0c;我们就需要使用滤波器对信号重新…

解决pycharm中,远程服务器上文件找不到的问题

一、问题描述 pycharm中&#xff0c;当我们连接到远程服务器上时。编译器中出现报错问题&#xff1a; cant open file /tmp/OV2IRamaar/test.py: [Errno 2] No such file or directory 第二节是原理解释&#xff0c;第三节是解决方法。 二、原理解释 实际上这是由于我们没有设置…

Debian或Ubuntu静态交叉编译arm和aarch64

Debian或Ubuntu静态交叉编译arm和aarch64 介绍术语ARM架构前置条件从源代码编译一个简单的C程序configure和make交叉编译关于静态链接和依赖关系使用 musl libc 实现与 configure 和 make 进行交叉编译 ARM 正在获得越来越多的关注&#xff0c;并且越来越受欢迎。直接在这些基于…

【广州华锐互动】牛顿运动定律VR虚拟教学软件

在科技日新月异的今天&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为我们带来了前所未有的沉浸式体验。在教育领域&#xff0c;VR技术的应用也日益广泛&#xff0c;尤其是在物理教学中&#xff0c;牛顿运动定律VR虚拟教学软件为学生…

云安全—K8S API Server 未授权访问

0x00 前言 master节点的核心就是api服务&#xff0c;k8s通过REST API来进行控制&#xff0c;在k8s中的一切都可以抽象成api对象&#xff0c;通过api的调用来进行资源调整&#xff0c;分配和操作。 通常情况下k8s的默认api服务是开启在8080端口&#xff0c;如果此接口存在未授…

Variations-of-SFANet-for-Crowd-Counting可视化代码

前文对Variations-of-SFANet-for-Crowd-Counting做了一点基础梳理&#xff0c;链接如下&#xff1a;Variations-of-SFANet-for-Crowd-Counting记录-CSDN博客 本次对其中两个可视化代码进行梳理 1.Visualization_ShanghaiTech.ipynb 不太习惯用jupyter notebook, 这里改成了p…

人工智能AI 全栈体系(十一)

第一章 神经网络是如何实现的 这些神经网络越来越复杂&#xff0c;都是用BP算法求解。网络有些变化就可能需要重新推导&#xff0c;而在实验过程中可能会做很多尝试&#xff0c;这样每次都重新推导BP算法太麻烦了。 十、深度学习框架 现在有了很多深度学习框架&#xff0c;这…

AQS面试题总结

一&#xff1a;线程等待唤醒的实现方法 方式一&#xff1a;使用Object中的wait()方法让线程等待&#xff0c;使用Object中的notify()方法唤醒线程 必须都在synchronized同步代码块内使用&#xff0c;调用wait&#xff0c;notify是锁定的对象&#xff1b; notify必须在wait后执…

QT5交叉编译保姆级教程(arm64、mips64)

什么是交叉编译&#xff1f; 简单说&#xff0c;就是在当前系统平台上&#xff0c;开发编译运行于其它平台的程序。 比如本文硬件环境是x86平台&#xff0c;但是编译出来的程序是在arm64架构、mips64等架构上运行 本文使用的操作系统&#xff1a;统信UOS家庭版22.0 一、安装…

由QTableView/QTableWidget显示进度条和按钮,理解qt代理delegate用法

背景&#xff1a; 我的最初应用场景&#xff0c;就是要在表格上用进度条显示数据&#xff0c;以及放一个按钮。 qt-creator中有自带的delegate示例可以参考&#xff0c;但终归自己动手还是需要理解细节&#xff0c;否则不能随心所欲。 自认没那个天赋&#xff0c;于是记录下…