并发编程

Posted zhangpang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发编程相关的知识,希望对你有一定的参考价值。

进程介绍:

1. 什么是进程
进程指的是一个程序的运行过程,或者说一个正在执行的程序
所以说进程一种虚拟的概念,该虚拟概念起源操作系统
2. 操作系统发展史
多道技术:
1. 空间上的复用: 多个任务复用/共享内存空间
ps:进程之间的内存空间是互相隔离的
2. 时间上的复用: 多个任务复用/共享cpu的时间
cpu在多个任务之间来回切换
1. 一个任务占用cpu时间过长会被操作系统强行剥夺走cpu的执行权限: 只是为了保证一个并发的效果,反而会降低效率
2. 一个任务遇到io操作了会被操作系统强行剥夺走cpu的执行权限: 为了实现并发的效果,这种情况下的并发可以提升效率

大前提:一个cpu同一时刻只能执行一个任务
串行: 一个任务完完整整运行完毕才能执行下一个任务
并发: 多个任务看起来是同时运行的,单核下就能实现并发(并发=切换+保存状态)
并行: 多个任务是真正意义上的同时运行,只有多核才能实行并行


开启进程的两种方式:
开启子进程的方式一:

from multiprocessing import Process
import time

def task(name):
print(‘%s is running‘ %name)
time.sleep(3)
print(‘%s is done‘ %name)

在windows系统上,开启子进程的操作必须放到if __name__ == ‘__main__‘的子代码中
if __name__ == ‘__main__‘:
p=Process(target=task,args=(‘egon‘,)) #Process(target=task,kwargs={‘name‘:‘egon‘})
p.start() # 只是向操作系统发送了一个开启子进程的信号
print(‘主‘)


开启子进程的方式二:
from multiprocessing import Process
import time

class Myprocess(Process):
def __init__(self,name):
super().__init__()
self.name=name

def run(self):
print(‘%s is running‘ %self.name)
time.sleep(3)
print(‘%s is done‘ %self.name)

在windows系统上,开启子进程的操作必须放到if __name__ == ‘__main__‘的子代码中
if __name__ == ‘__main__‘:
p=Myprocess(‘egon‘)
p.start() # 只是向操作系统发送了一个开启子进程的信号
print(‘主‘)




























































以上是关于并发编程的主要内容,如果未能解决你的问题,请参考以下文章

golang代码片段(摘抄)

《java并发编程实战》

Java并发编程实战 04死锁了怎么办?

Java并发编程实战 04死锁了怎么办?

Java编程思想之二十 并发

golang goroutine例子[golang并发代码片段]