這篇文章給大家介紹使用Python2.7怎么在多進程中開發(fā)多線程,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
成都創(chuàng)新互聯(lián)公司-專業(yè)網站定制、快速模板網站建設、高性價比廣宗網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式廣宗網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋廣宗地區(qū)。費用合理售后完善,十載實體公司更值得信賴。python有哪些常用庫python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。
可以使得程序執(zhí)行效率至少提升10倍
#!/usr/bin/env python # -*- coding: utf-8 -*- """ @Time : 2018/10/24 @Author : LiuXueWen @Site : @File : transfer.py @Software: PyCharm @Description: """ import os import traceback import threading from multiprocessing import Pool from multiprocessing.dummy import Pool as ThreadPool # 兼容python2.7上多線程的bug,不加上下面的反代理程序不能正常執(zhí)行 def proxy(cls_instance, i): return cls_instance.multiprocess_thread(i) def proxy2(cls_instance, i): return cls_instance.file_operation(i) class file2transfer(): # 多進程執(zhí)行程序 def multiprocessingTransferFiles(self): try: # 創(chuàng)建進程池 p = Pool() //參數(shù)末尾必須加上逗號 p.apply_async(proxy, args=(self, self.root_path,)) p.close() p.join() except Exception as e: print(e) # 每個進程下的多線程執(zhí)行,線程數(shù)等于當前機器的核數(shù) def multiprocess_thread(self, root_path): try: # 創(chuàng)建線程鎖 lock = threading.RLock() lock.acquire() # 獲取每個文件 for pfile in os.listdir(root_path): # 獲取文件的完整路徑 full_file_path = os.path.join(root_path, pfile) # 多線程讀寫文件 p = ThreadPool() # 執(zhí)行線程 p.apply_async(proxy2, args=(self, full_file_path,)) p.close() p.join() except Exception as e: print(e) finally: # 釋放線程鎖 lock.release() # 對每個文件夾下的每個文件進行操作 def file_operation(self, full_file_path): try: // TODO 真正需要單獨執(zhí)行的操作 pass except Exception as e: print(e)
關于使用Python2.7怎么在多進程中開發(fā)多線程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。