day34-python之进程调用
1.信号量
- import threading,time
- class myThread(threading.Thread):
- def run(self):
- if semaphore.acquire():
- print(self.name)
- time.sleep(3)
- semaphore.release()
- if __name__=="__main__":
- semaphore=threading.Semaphore()
- thrs=[]
- for i in range(100):
- thrs.append(myThread())
- for t in thrs:
- t.start()
2.同步对象
- import threading,time
- class Boss(threading.Thread):
- def run(self):
- print("BOSS:今晚大家都要加班到22:00。")
- print(event.isSet())# False
- event.set()
- time.sleep(5)
- print("BOSS:<22:00>可以下班了。")
- print(event.isSet())
- event.set()
- class Worker(threading.Thread):
- def run(self):
- event.wait()# 一旦event被设定,等同于pass
- print("Worker:哎……命苦啊!")
- time.sleep(1)
- event.clear()
- event.wait()
- print("Worker:OhYeah!")
- if __name__=="__main__":
- event=threading.Event()
- threads=[]
- for i in range(5):
- threads.append(Worker())
- threads.append(Boss())
- for t in threads:
- t.start()
- for t in threads:
- t.join()
- print("ending.....")
3.生产者消费者模型
- # import time,random
- # import queue,threading
- #
- # q = queue.Queue()
- #
- # def Producer(name):
- # count = 0
- # while count <10:
- # print("making........")
- # time.sleep(5)
- # q.put(count)
- # print('Producer %s has produced %s baozi..' %(name, count))
- # count +=1
- # #q.task_done()
- # q.join()
- # print("ok......")
- # def Consumer(name):
- # count = 0
- # while count <10:
- # time.sleep(random.randrange(4))
- # # if not q.empty():
- # # print("waiting.....")
- # #q.join()
- # data = q.get()
- # print("eating....")
- # time.sleep(4)
- #
- # q.task_done()
- # #print(data)
- # print('\033[32;1mConsumer %s has eat %s baozi...\033[0m' %(name, data))
- # # else:
- # # print("-----no baozi anymore----")
- # count +=1
- #
- # p1 = threading.Thread(target=Producer, args=('A君',))
- # c1 = threading.Thread(target=Consumer, args=('B君',))
- # c2 = threading.Thread(target=Consumer, args=('C君',))
- # c3 = threading.Thread(target=Consumer, args=('D君',))
- #
- # p1.start()
- # c1.start()
- # c2.start()
- # c3.start()
4.递归锁
- import threading
- import time
- class MyThread(threading.Thread):
- def actionA(self):
- r_lcok.acquire() #count=1
- print(self.name,"gotA",time.ctime())
- time.sleep(2)
- r_lcok.acquire() #count=2
- print(self.name, "gotB", time.ctime())
- time.sleep(1)
- r_lcok.release() #count=1
- r_lcok.release() #count=0
- def actionB(self):
- r_lcok.acquire()
- print(self.name, "gotB", time.ctime())
- time.sleep(2)
- r_lcok.acquire()
- print(self.name, "gotA", time.ctime())
- time.sleep(1)
- r_lcok.release()
- r_lcok.release()
- def run(self):
- self.actionA()
- self.actionB()
- if __name__ == '__main__':
- # A=threading.Lock()
- # B=threading.Lock()
- r_lcok=threading.RLock()
- L=[]
- for i in range(5):
- t=MyThread()
- t.start()
- L.append(t)
- for i in L:
- i.join()
- print("ending....")
5.进程调用
- # from multiprocessing import Process
- # import time
- #
- #
- # def f(name):
- # time.sleep(1)
- # print('hello', name,time.ctime())
- #
- # if __name__ == '__main__':
- # p_list=[]
- # for i in range(3):
- #
- # p = Process(target=f, args=('alvin',))
- # p_list.append(p)
- # p.start()
- #
- # for i in p_list:
- # i.join()
- # print('end')
- from multiprocessing import Process
- import time
- # class MyProcess(Process):
- #
- # # def __init__(self):
- # # super(MyProcess, self).__init__()
- # # #self.name = name
- #
- # def run(self):
- # time.sleep(1)
- # print ('hello', self.name,time.ctime())
- #
- # if __name__ == '__main__':
- # p_list=[]
- #
- #
- # for i in range(3):
- # p = MyProcess()
- # p.daemon=True
- # p.start()
- # p_list.append(p)
- #
- # # for p in p_list:
- # # p.join()
- #
- # print('end')
- # from multiprocessing import Process
- # import os
- # import time
- #
- #
- # def info(title):
- # print("title:", title)
- # print('parent process:', os.getppid())
- # print('process id:', os.getpid())
- #
- # def f(name):
- #
- # info('function f')
- # print('hello', name)
- from multiprocessing import Process
- import os
- import time
- def info(title):
- print("title",title)
- print("parent process:",os.getppid())
- print("process id:",os.getpid())
- def f(name):
- info('function f')
- print("hello",name)
- if __name__ == '__main__':
- info('main process line')
- time.sleep(1)
- print("-------")
- p = Process(target=info("yuan"))
- p.start()
- p.join()
- # if __name__ == '__main__':
- #
- # info('main process line')
- #
- # time.sleep(1)
- # print("------------------")
- # p = Process(target=info, args=('yuan',))
- # p.start()
- # p.join()
day34-python之进程调用的更多相关文章
- python之进程与线程
什么是操作系统 可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统.还有没有其他的? 想想我们使用的手机,Google公司的Androi ...
- Python:进程
由于GIL的存在,python一个进程同时只能执行一个线程.因此在python开发时,计算密集型的程序常用多进程,IO密集型的使用多线程 1.多进程创建: #创建方法1:将要执行的方法作为参数传给Pr ...
- python笔记之调用系统命令
python笔记之调用系统命令 目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数, ...
- python进阶------进程线程(五)
Python中的IO模型 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别 ...
- python进阶------进程线程(三)
python中的进程 1.multiprocessing模块 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进 ...
- python 之进程篇
多线程给我们的感觉 1.因为GIL的存在,一个进程的多线程同一时刻只能进去一个,感觉是假的并发 2.只适合I/O密集型的任务 3.针对计算密集型,就挂了(变成串行了) 在python中想要充分利用多核 ...
- Python之进程
进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代 ...
- Python之进程 3 - 进程池和multiprocess.Poll
一.为什么要有进程池? 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务.那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗 ...
- Python之进程 2 - multiprocessing模块
我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程.多个进程可以实现并发效果,也就是说, ...
- {Python之进程} 背景知识 什么是进程 进程调度 并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 multiprocess模块 进程池和mutiprocess.Poll
Python之进程 进程 本节目录 一 背景知识 二 什么是进程 三 进程调度 四 并发与并行 五 同步\异步\阻塞\非阻塞 六 进程的创建与结束 七 multiprocess模块 八 进程池和mut ...
随机推荐
- Mysql按日、周、月进行分组统计
我们在用 Mysql 制作数据可视化图表时候,经常需要按照天.周.月等不同的粒度对数据进行分组统计.而我们的时间可能是 “2017/12/5 0:0:0” 这种准确的时间. 所以在进行分组之前我们需要 ...
- java使用ssh连接Linux并执行命令
方式1:通过设置账号密码和链接地址 maven pom.xml配置: <dependency> <groupId>com.jcraft</groupId ...
- 系统运维工程师装逼完全指南(转载Mark)
1.全球化的认证有助于提升逼格,什么OCM.CCIE.RHCA.CISSP等等能考都考,再不济,也要有一张系统架构设计师或者网络规划设计师的信产部认证.每过一个认证,逼格提升一档. 2.TCP/IP协 ...
- Java项目main方法启动的两种方式
1.打包时指定了主类,可以直接用java -jar xxx.jar. <!--main方法打包jar包插件--> <plugin> <artifactId>mave ...
- Spring Boot拦截器实现并和swagger集成后使用拦截器的配置问题
1. 定义拦截器 LoginInterceptor LoginInterceptor.java是整个登录认证模块中的核心类之一,它实现了HandlerInterceptor类,由它来拦截并过滤到来的每 ...
- mysql查询列为空
SELECT * FROM `表名` WHERE ISNULL(列名)
- 通过元类创建一个Python类
通过元类创建一个Python类 最开始学pytohn的时候我们这样定义类 class ClassName: pass 当熟悉了元类的概念之后我们还可以这样创建 ClassName = type(&qu ...
- 05 javascript知识点---BOM和DOM
1.DOM简单学习(为了满足案例要求) 功能:控制html文档的内容获取页面标签(元素)对象:Element document.getElementById("id值"):通过元素 ...
- 使用JMeter进行Apache Kafka负载测试
1.卡夫卡负载测试 在这个Apache Kafka教程中,我们将了解如何使用Apache JMeter,如何在Apache Kafka上执行Kafka负载测试.此外,这个Kafka负载测试教程教我们如 ...
- 使用guava cache在本地缓存热点数据
某些热点数据在短时间内可能会被成千上万次访问,所以除了放在redis之外,还可以放在本地内存,也就是JVM的内存中. 我们可以使用google的guava cache组件实现本地缓存,之所以选择gua ...