2017-02-14 3 views
0

den folgenden Code Gegeben:Multiprozessing mit Objekten?

if __name__ == '__main__': 
    print "name = main" 
    multiprocessing.Process(target=r.fetchFiles, args=(r.results.pop(),)) 

class R: 
    # ... 
    def fetchFiles(self, blabla): 
     with open('/tmp/doyou.txt', 'w+') as f: 
      f.write('do you do something?') 

r ist eine Instanz R. Die Testdatei wird nicht geschrieben. Warum?

+0

Warum ist r eine Instanz von R? Dein Code zeigt das nicht an. Damit Multiprozessing funktioniert, müssen Sie Ihren gesamten Code in Funktionen einfügen. – MKesper

+0

Schätzen Sie, dass ich 18000 Zeilen Code nicht eingefügt habe. Vielen Dank. –

+0

Bitte geben Sie ein minimales Beispiel, das trotzdem funktionieren sollte. – MKesper

Antwort

1

Der Prozess muss started sein:

process = multiprocessing.Process(target=r.fetchFiles, args=(r.results.pop(),)) 
process.start() 
process.join() 

Ein einfaches Ausführungsbeispiel:

from multiprocessing import Process 

class R: 
    def print_value(self, value): 
     print(value) 

if __name__ == '__main__': 
    process = Process(target=R().print_value, args=('a',)) 
    process.start() 
    process.join() 
+0

:) richtig @Elisha – dsgdfg

Verwandte Themen