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之进程调用的更多相关文章

  1. python之进程与线程

    什么是操作系统       可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统.还有没有其他的? 想想我们使用的手机,Google公司的Androi ...

  2. Python:进程

    由于GIL的存在,python一个进程同时只能执行一个线程.因此在python开发时,计算密集型的程序常用多进程,IO密集型的使用多线程 1.多进程创建: #创建方法1:将要执行的方法作为参数传给Pr ...

  3. python笔记之调用系统命令

    python笔记之调用系统命令 目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数, ...

  4. python进阶------进程线程(五)

    Python中的IO模型 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别 ...

  5. python进阶------进程线程(三)

    python中的进程 1.multiprocessing模块 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进 ...

  6. python 之进程篇

    多线程给我们的感觉 1.因为GIL的存在,一个进程的多线程同一时刻只能进去一个,感觉是假的并发 2.只适合I/O密集型的任务 3.针对计算密集型,就挂了(变成串行了) 在python中想要充分利用多核 ...

  7. Python之进程

    进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代 ...

  8. Python之进程 3 - 进程池和multiprocess.Poll

    一.为什么要有进程池? 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务.那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗 ...

  9. Python之进程 2 - multiprocessing模块

    ​ 我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程.多个进程可以实现并发效果,也就是说, ...

  10. {Python之进程} 背景知识 什么是进程 进程调度 并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 multiprocess模块 进程池和mutiprocess.Poll

    Python之进程 进程 本节目录 一 背景知识 二 什么是进程 三 进程调度 四 并发与并行 五 同步\异步\阻塞\非阻塞 六 进程的创建与结束 七 multiprocess模块 八 进程池和mut ...

随机推荐

  1. ip地址掩码和位数对应关系表、子网掩码、网络地址、主机地址-yellowcong

    本文链接:https://blog.csdn.net/yelllowcong/article/details/76736594ip的地址掩码,刚开始感觉特别蒙蔽,网掩码都是每段8位二进制,共32位,子 ...

  2. nodeJs实现文件上传,下载,删除

    转:https://blog.csdn.net/qq_36228442/article/details/81709272 一.简介 本文介绍了nodeJs+express框架下,用multer中间件实 ...

  3. Android apk在线升级

    APK 在线升级 APK 在线升级几乎是所有程序必备的功能. 在线升级功能能解决已有的问题并提供更丰富的新功能. 基本的流程是: 检测到新版本信息 弹出升级提示窗口 点击 No 不进行升级,完毕! 点 ...

  4. linux中安装robot环境

    https://www.cnblogs.com/lgqboke/p/8252488.html(文中验证robotframework命令应该为 robot --version) 可能遇到的问题: 1.p ...

  5. IDEA下同时使用Git和svn

    使用Git时将文件改成Git,Svn时改成svn 修改项目下.idea目录的vcs.xml配置文件. <?xml version="1.0" encoding="U ...

  6. 【VS开发】MFC动态设置对话框属性 弹出或嵌入

    参考: MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个"Border"项,改变该项的值就可以改变窗口边框风格.实际上w ...

  7. java.lang.IllegalArgumentException: TLSv1.2

    通过HTTPClient4.5,基于JDK1.6 new SSLConnectionSocketFactory(builder.build(), new String[]{"SSLv2Hel ...

  8. 最新 淘友天下java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.淘友天下等10家互联网公司的校招Offer,因为某些自身原因最终选择了淘友天下.6.7月主要是做系统复习.项目复盘.Leet ...

  9. jenkins回滚之groovy动态获取版本号

    grovvy调试: 部署路径确定下来, 每个服务写死,传参 服务名 + 环境 给版本服务返回版本信息: groovy取分支: def gettags = ("git ls-remote -h ...

  10. XML解析详解|乐字节

    大家好,乐字节的小乐又来了,Java技术分享哪里少的了小乐!上次我们说了可扩展标记语言XML之二:XML语言格式规范.文档组成,本文将介绍重点——XML解析.   基本的解析方式有两种:一种叫 SAX ...