import multiprocessing
import time
def sleeper(sec):
time.sleep(sec)
if __name__ == "__main__":
sec=1
process = multiprocessing.Process(target=sleeper,args=[sec])
process.start()
上面的代码运行良好。但是,如果 sleeper 函数是类实例中的方法,则该方法不起作用。所以我需要一些想法,如果 sleeper 函数是即时方法我应该做什么(如下所示)
class SleepingClass:
def __init__(self, sec):
self.sec = sec
def sleeper(sec):
time.sleep(sec)
sleepingClass = SleepingClass(1)
if __name__ == "__main__":
sec=1
process = multiprocessing.Process(target=sleepingClass.sleeper,args=[sec])
process.start()
我尝试运行不在实例类中的方法并且它有效。但当我把它放在实例类中时,它却没有。
课程写得不正确。代码中的评论如下:
import multiprocessing
import time
class SleepingClass:
def __init__(self, sec):
self.sec = sec
def sleeper(self): # No need for argument. Instance has it.
print(f'sleeping for {self.sec} seconds...')
time.sleep(self.sec)
if __name__ == "__main__":
# Create the instance only in main
sleepingClass = SleepingClass(1)
# Pass it to the sub-process...no need to pass an argument.
process = multiprocessing.Process(target=sleepingClass.sleeper)
process.start()