您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么使用python多進程程序打包成exe的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么使用python多進程程序打包成exe文章都會有所收獲,下面我們一起來看看吧。
部分的多進程代碼
if __name__ == '__main__': """"流程模擬""" multiprocessing.freeze_support() # 打包成exe時,需要該語句,防止系統無限創建子線程 print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} - [主進程] - 程序已啟動") if WORKERS > 0: print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} - [主進程] - 當前為并發爬取,每次采集{WORKERS}條url") else: print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} - [主進程] - 當前為單線程爬取,時間間隔為{INTERVAL}秒") init_data_queue = multiprocessing.Queue() # 從數據庫里取出來的需要爬取的url等信息 result_data_queue = multiprocessing.Queue() # 爬取的結果 wait_to_insert_queue = multiprocessing.Queue() # 等待寫入數據庫的數據 已經去重 符合insert的格式要求 p1 = multiprocessing.Process(target=get_remote_data, args=(init_data_queue, wait_to_insert_queue), name='[數據庫交互進程]') p2 = multiprocessing.Process(target=scrapy_wechat, args=(init_data_queue, result_data_queue), name='[爬蟲進程]') p3 = multiprocessing.Process(target=make_data, args=(result_data_queue, wait_to_insert_queue), name='[數據處理進程]') try: p1.start() p2.start() p3.start() except Exception as e: print(f"{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} - [主進程] - 錯誤信息: {e}")
程序打包成exe文件后,啟動時會瘋狂創建子進程,程序來回在if WORKERS > 0:
這行代碼中執行,即無法正常工作,還會導致電腦逐漸卡死。解決的辦法為:在程序入口前,加入multiprocessing.freeze_support()
即可解決此事。值得注意的時,該語必須寫在if __name__ == "__main__"
的下一句,如果沒有main語句,也會出錯。
python的五大特點:
1.簡單易學,開發程序時,專注的是解決問題,而不是搞明白語言本身。
2.面向對象,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現面向對象編程。
3.可移植性,Python程序無需修改就可以在各種平臺上運行。
4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。
5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
關于“怎么使用python多進程程序打包成exe”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“怎么使用python多進程程序打包成exe”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。