#!/use/bin/python
# -*- conding:utf-8 -*-

# 并发编程?
#     一个程序可以在同一时间做很多事情
#     解决程序中的IO操作影响程序效率的问题
#
# 并发编程为什么重要
#
# 操作系统
#         并发这件事

# 输入输出  :大部分时间逗不会占用cpu,且会降低你程序的效率
# 如input/print  文件读数据,取数据
# 网络操作:  从网络上获取数据 爬虫  发送请求 写读  从网络上获取数据

# 单进程 -->多道系统-->分时进程  实时系统(分时:就是时间片轮转算法)
#

# 进程:运行中的程序
# 什么是程序:如微信,qq pycharm
# 操作系统  只负责管理调度进程
# 进程是操作系统中资源分配的最小单位
# 每一个运行中的程序都需要有自己的内存,资源
# 都分配给进程,记录执行的状态,管理自己的内存资源

# 在python中,每一个运行中的程序 都是一个进程
# 一个进程,就能做一件事
# 如果有多个进程  就可以做多件事儿
# 如果用pyth来开启一个进程

# import  os
# import  time
# print(os.getpid())
# time.sleep(1000)


# Process 进程
# multi  多远的

# import  os
# import  time
# from multiprocessing import Process
# def func(num):
#     print(num,os.getpid())
#     time.sleep(0.5)
#     print(num, os.getpid())
#     time.sleep(0.5)
#     print(num, os.getpid())
#     time.sleep(0.5)
#     print(num, os.getpid())
#
# if __name__ == '__main__':
#     print(os.getpid())
#     p = Process(target = func,args=(10,))  #创造一个进程
#     p.start()  #开启进程
#     print(os.getpid())
#     time.sleep(1)
#     print(os.getpid(),1)
#     time.sleep(1)
#     print(os.getpid(), 2)

# 同步:先洗衣服再做饭
# 异步:有了洗衣机,洗衣机洗衣服,然后你做饭
# 异步可以有效的提高执行效率,进程与进程之间都是异步的


    # 几个概念
    # 子进程
    # 住进程
    # 父进程
    #
    # 关于print的顺序

from multiprocessing import Process
import time


#什么手机进程:在程序运行中,计算机最小的资源分配单位
# 程序呗执行会产生一个主进程,同时主进程也叫父进程
# 在python中可以用代码启动一个子进程
# 父子进程之间的数据是异步的,各自执行自己的
# global()全局的   local局部的
# 主进程什么时候结束:主进程会等待子进程结束后在结束
# n = 100
# def func():
#     global n
#     n = 0
#     print('-------')
# # func()
# # print(n)
#
#     # func()
# if __name__ == '__main__':
#         Process(target=func).start()
#         time.sleep(1)
#         print(n)
#
#
# 开启多个子进程
def func(n):
    time.sleep(1)  #只要在等待就会陷入阻塞状态
    print('_'*n)
if __name__ == '__main__':
    for i in range (10):
        Process(target=func,args=(i,)).start()
    # Process(target=func,args=(2,)).start()
    # Process(target=func,args=(3,)).start()
    # Process(target=func,args=(4,)).start()

#时间片的轮转