zoukankan      html  css  js  c++  java
  • python3之进程

    1创建一个进程:

    import time
    import multiprocessing
    import os
    
    def text1():
        while True:
            print("111111111111")
            print(os.getpid(), os.getppid())
            time.sleep(1)
    
    def text2():
      while True:
        print("222222222222")
        print(os.getpid(), os.getppid())
        time.sleep(1)
    
    
    
    
    def main():
        # text1()
        # text2()
        print(os.getpid())   #进程的pid
        p1 = multiprocessing.Process(target=text1, )  #创建进程
        p2 = multiprocessing.Process(target=text2, )
        p1.start()   #执行进程
        p2.start()
    
    
    if __name__ == "__main__":
        main()
    

     2 进程与进程之间是不共享数据的,如果想实现进程之间的数据共享;需要Queue队列来实现:

    q = multiprocessing.Queue()   创建队列

    q.put()   向队列里面存放数据

    q.get()  从队列里面获取数据

    q.empty()   队列为空

    import multiprocessing
    import time
    
    nums = [11,22,33,44]
    def text1(q):
        nums.append(55)
        print(nums)
        for temp in nums:
            q.put(temp)
    
        while True:
            print("11111111")
            time.sleep(1)
    
    
    def text2(q):
        new_nums = []
        while True:
            data = q.get()
            new_nums.append(data)
            if q.empty():
                break
        print(new_nums)
        while True:
            print("222222222")
            time.sleep(1)
    
    
    
    def main():
        q = multiprocessing.Queue()   #创建队列
        """
        一个进程向Queue中写入数据,另外一个进程从Queue中获取数据,
        通过Queue完成了 多个需要配合的进程间的数据共享,从而能够 起到 解耦的作用
        """
        p1 = multiprocessing.Process(target=text1,args=(q, ))  #传递参数
        p2 = multiprocessing.Process(target=text2,args=(q, ))
    
        p1.start()
        p2.start()
    
    
    if __name__ == "__main__":
        main()
    

     3进程池:

    import multiprocessing
    import time, os, random
    
    
    def text(i):
        time_start = time.time()
        print("开始时间:%d" % time_start)
        print("%d 的进程:%d" %(i,os.getpid()))
        time.sleep(random.random()*2)
        time_end = time.time()
        print("执行耗时:%s" %(time_end - time_start))
    
    
    def main():
        po = multiprocessing.Pool(3)   #定义一个进程池,最大进程数为3
        for i in range(0,10):
            po.apply_async(text,(i,))  #向进程池中添加进程
    
        po.close()    #关闭进程池,
        po.join()    
    
    if __name__ == "__main__":
        main()
    
  • 相关阅读:
    Android中对TextView中的部分内容的字体样式的设置方法
    Android中的ListView的绘制过程中执行的方法
    EL表达式的简单介绍
    Android中ViewPgae中的Fragment如何确认当前页面可见的问题
    Jsp中的注释
    Android onActivityResult()运行时刻的问题
    JSTL标签的用法详解
    JavaWeb开发中遇到的错误:org.apache.catalina.core.StandardWrapperValve invoke
    Apache中配置数据库连接池(数据源)
    IT阅读——关于“业务”
  • 原文地址:https://www.cnblogs.com/yan-peng/p/9971989.html
Copyright © 2011-2022 走看看