Python多程序相關的坑

2022-04-29 07:51:08 字數 824 閱讀 4759

python的multiprocessing模組實現了多程序功能,但官方文件上只有一些比較簡單的用法,主要是使用函式作為process的target,而如何在class中使用多程序並沒有多講解。google出兩篇比較詳細的文章,建議從它們入門:

下面記錄一下自己這週在python多程序上碰到的坑:

和threading不同,multiprocessing process引數必須能夠被pickle進行序列化

例如上,在3.5中可以執行,這是因為在3.5版本中,pick可以序列化更多的型別。

typeerror: pickling an authenticationstring object is disallowed for security reasons

或者:_pickle.picklingerror: can't pickle : attribute lookup weakref on builtins failed

manager會生成乙個程序,所以不同程序間訪問統一變數,是通過ipc進行的,會有效能上的開銷。

使用multiprocessing時,主模組會被import到各程序中,所以建立子程序的部分,必須使用

if __name__ == '__main__:

進行保護,否則會有runtime error,或者遞迴建立子程序

update 1 (2018-11-08): 

作為對比,linux下執行的jupyter-notebook並不會。

python多程序的坑 Python多程序相關的坑

python的multiprocessing模組實現了多程序功能,但官方文件上只有一些比較簡單的用法,主要是使用函式作為process的target,而如何在class中使用多程序並沒有多講解。google出兩篇比較詳細的文章,建議從它們入門 下面記錄一下自己這週在python多程序上碰到的坑 建立...

python多程序相關知識

coding utf8 import multiprocessing def fun print hello world for i in xrange 10 m multiprocessing.process target fun,args m.start 以多程序的方式輸出聲音和畫面 usr b...

Python 多程序 踩坑記

話不多說,python多程序要匯入包from multiprocessing import pool 具體使用方法如下 def func i print run task s.os.getpid t time.time do some operations print task s runs 0.2...