你已經(jīng)實(shí)現(xiàn)了啊。在__init__初始化參數(shù)里,將參數(shù)傳遞進(jìn)去。
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站設(shè)計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)芷江,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
另外因?yàn)榫€程工作在主程序同一個空間里,所以可以用全局變量傳遞。比如定義一個global v,然后在主程序里設(shè)置好。
再在線程里用global v來引用。
如果在線程運(yùn)行當(dāng)中,動態(tài)的改參數(shù)。可以象是這里的thread_stop設(shè)置。由主進(jìn)程與從進(jìn)程單對單的傳遞信號。
另外還可以通過隊(duì)列。這個好處是有一個鎖,可以全局使用。
此外你還可以引入一個消息管理器。各個線程與主進(jìn)程直接通過消息傳遞變量。
進(jìn)程之間也可以通過共享內(nèi)存來實(shí)現(xiàn)RPC通信,就是交換數(shù)據(jù)。
線程處理完的數(shù)據(jù),如果主程序想處理??梢赃@樣。讓線程通過全局變量,通過隊(duì)列傳回來。
不過主進(jìn)程通常還有一個任務(wù),就是監(jiān)督線程的完成退處,并管理線程中止信號。
比如你這個程序少了一個
thread.join() 這里的join可以加一個timeout,當(dāng)超時時,主進(jìn)程就可以脫身出來,做一些其它的事情,比如處理返回數(shù)值。 如果線程通過一個數(shù)組變量將狀態(tài)傳回主進(jìn)程。這樣輪洵子線程狀態(tài)會比join的效率更高。
你這個程序里用文件傳遞也不是不可以。這是一個很好思路。當(dāng)你傳遞變量困難時,可以用文件?;蛘呤菙?shù)據(jù)庫。
已有字符串形式的函數(shù)名稱,那么如何調(diào)用這個函數(shù)呢?
通過調(diào)用內(nèi)置函數(shù)locals()和globals()返回的字典對象,就可以可以獲得名稱與對象的映射關(guān)系。其中,locals()僅在全局范圍內(nèi)調(diào)用時可以獲得函數(shù)對象。 我們來看以下的例子。
需要注意的是,使用上述方法通過字符串調(diào)用函數(shù)時,為了系統(tǒng)的安全,防止執(zhí)行任意函數(shù),需要對函數(shù)名做一些處理,也就是使用統(tǒng)一的前綴為這些函數(shù)命名。例如在上述例子中,使用前綴cmd_+函數(shù)名的形式定義函數(shù)(cmd_help,cmd_sum)。
在傳入函數(shù)名字符串時,只傳入函數(shù)名的后半部分(如"help","sum"),由程序添加前綴后組成完整的函數(shù)名,再調(diào)用該函數(shù)。
對于類的成員函數(shù),則可以使用getattr()獲得類成員函數(shù)。
上述代碼通過字符串調(diào)用了類成員函數(shù),與前一段代碼執(zhí)行的結(jié)果相同。
此外,還可以使用字典將字符串與函數(shù)對應(yīng)起來調(diào)用,缺點(diǎn)就是每增加一個函數(shù)需要相應(yīng)在字典對象中添加相應(yīng)的鍵值,增加代碼維護(hù)工作量。
以上代碼在Python 3.6以上運(yùn)行通過。
(1)主程序main.py與模塊程序mod1.py在同一目錄下。
--src
|--mod1.py
|--main.py
直接在main.py中導(dǎo)入模塊mod1.py,即 import mod1 或 from mod1 import *
(2)主程序main.py所在目錄是模塊程序mod.py所在目錄的父目錄。
--src
|--mod1.py
|--main.py
---mod2
?|--mod2.py
先需要在mod2文件夾中建立空文件__init__.py
然后在main.py中導(dǎo)入模塊mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
(3)主程序main.py導(dǎo)入上層目錄中的模塊或其他目錄(平級)下的模塊。
--src
|--mod1.py
---mod2
?|--mod2.py
---sub
?|--main.py
先需要在mod2文件夾中建立空文件__init__.py,而src文件夾下不需要建立
然后進(jìn)入主程序main.py所在的路徑,執(zhí)行python main.py
在main.py中導(dǎo)入模塊mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
執(zhí)行前在main.py中加入:
import sys
sys.path.append("..")
import mod1
import mod2.mod2
今天遇到同樣的問題,就來答一波吧
1,如果是在類中,那么就很簡單了,類中的一個函數(shù)調(diào)用另一個函數(shù),只要在那個被調(diào)用的函數(shù)前加self即可(圖如下,詳細(xì)可以參考筆者博客),
2,如果不是在類中,(這是筆者遇到的問題),有一個簡單的方法,如下sin_f函數(shù)調(diào)用sin函數(shù)(注:a=sin()不能寫到sin_f()函數(shù)下,會說a沒聲明就調(diào)用):
3,如果是已經(jīng)存在的包,那么調(diào)用包更簡單了,(同樣可以參考筆者上面給的那個博客第四部分)
4,最后,更多關(guān)于python問題可以參考筆者的python教程筆記