簡體   English   中英

帶有子進程的線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM