您好,登錄后才能下訂單哦!
這篇文章給大家介紹使用Python2.7怎么在多進程中開發(fā)多線程,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
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ā)多線程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。