1 | 进程: 进程是资源分配和调度单位 |
1 | 并发和并行 |
1 | 线程和进程的的关系: |
1 | 进程和线程创建步骤 |
1 | 协程的用处: |
1 | 多进程若共享资源需要导包: |
注意事项:
1、如果是windows系统, multiprocessing.Process需在if name == ‘main‘:下使用
2、args后面的参数必须是tuple类型,在这里可以认为是为整数参数20000000添加了小括号和逗号
1 | 并发和并行:(通俗的解释并行指的是多个事件同时进行,并发指的是两个或多个事件在同一时间间隔发生) |
多线程和多进程的使用场景
1 | io操作不占用cpu(从硬盘,网络,内存读取数据都算io) |
1 | import multiprocessing |
默认进程之间数据是不共享的,如果一定要实现互访可以通过QUEUE实现,这个queue和线程中的queue使用方法一样,不过线程中的queue只能在线程之间使用
1 | 并发指的是多个线程被一个cpu轮流切换着执行(理解为在做一件事空闲的时候同时做宁外一件事)===>理解为交替执行 |
PiPe(两个进程间的通信,两个进程分别位于管道的两端)
1 | 多进程中的管道是用来实现进程间的通信的,两个进程通信,需要在内存中开辟一个空间. |
获取多进程的结果然后处理
1 | ls = [] |
进程间通信之共享内存(python3.8)
1 | from multiprocessing import Value,Array |
####多线程1
2
3
4
5
6
7
8
9
10
11
12
13
14def func_aaa(i):
print(i)
time.sleep(2)
return i[0]**3,i[1]*10
def run_thread_pool_sub(name_list):
with ThreadPoolExecutor(max_workers=2) as t:
res = [t.submit(func_aaa, i) for i in name_list]
for future in res:
print(8979987)
data = future.result()
print(data)
name_list = [[1,9999],[2,9999],[3,9999],[4,9999],[5,9999],[6,9999]]
run_thread_pool_sub(name_list)