0
Der Versuch, zwei Methoden say_hello
und say_world
von getattr()
in multiprocessing.Process
aufzurufen, aber Methode say_world
wurde nicht ausgeführt. Wie kann ich es möglich machen? Vielen Dank.Warum kann multiprocess.Process Aufruf getattr Methode nicht?
# -*- coding: utf-8 -*-
from multiprocessing import Process
import time
class Hello:
def say_hello(self):
print('Hello')
def say_world(self):
print('World')
class MultiprocessingTest:
def say_process(self, say_type):
h = Hello()
while True:
if hasattr(h, say_type):
result = getattr(h, say_type)()
print(result)
time.sleep(1)
def report(self):
Process(target=self.say_process('say_hello')).start()
Process(target=self.say_process('say_world')).start() # This line hasn't been executed.
if __name__ == '__main__':
t = MultiprocessingTest()
t.report()
Diese Lösung funktioniert! Vielen Dank. Aber ich habe Zehner von 'say_xxx' Methode, in der die Häufigkeit von' time.sleep' nicht gleich ist. –
Mit 'args' können Parameter an die Zielfunktionen übergeben werden:' Process (target = self.say_process ('say_hello'), args = (2,)). Start() 'wo musst du deine' say_xxx' deklarieren Methoden wie 'def say_xxx (self, sleep_time)'. – clemens
Sie haben Recht. Ich werde den Schlaf in der Methode 'say_process' hinzufügen und die Methode' say_xxx' kann sich auf ihr eigenes Geschäft konzentrieren. –