[英]Threading with subprocess
我正在使用python 2.7和Threading的新功能。 我有一個類文件並運行方法。 但是在創建線程實例時,我看不到運行方法被調用。 我還計划在run
方法中使用subprocess.Popen
並為每個文件名獲取該進程的stdout
並打印輸出。
請告訴我在這里缺少要調用run
方法的內容。
class FileScanThread(threading.Thread):
def __init__(self, myFileName):
print("In File Scan Thread")
self.mapFile = myFileName
#myjar=myFileName
self.start()
def run(self):
print self.mapFile
x= FileScanThread("myfile.txt")
您忘記調用母類構造函數來指定目標。 它不是java,並且run
沒有特殊含義。 默認情況下,目標為“ None
,線程不執行任何操作。
import threading
class FileScanThread(threading.Thread):
def __init__(self, myFileName):
threading.Thread.__init__(self,target=self.run)
# another syntax uses "super", which is simpler in python 3
# super().__init__(target=self.run)
print("In File Scan Thread")
self.mapFile = myFileName
#myjar=myFileName
self.start()
def run(self):
print(self.mapFile)
x= FileScanThread("myfile.txt")
x.join() # when you're done
這將做您想要的。 您不是從Thread類調用__init__
。
class FileScanThread(threading.Thread):
def __init__(self, myFileName):
threading.Thread.__init__(self)
print("In File Scan Thread")
self.mapFile = myFileName
#myjar=myFileName
self.start()
def run(self):
print self.mapFile
x = FileScanThread("myfile.txt")
我認為您不必將目標參數傳遞給它。 至少我通常不這樣做。
輸出:
In File Scan Thread
myfile.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.