Python3: вызов класса как отдельного процесса - PullRequest
0 голосов
/ 27 августа 2018

Я играю с библиотекой Process из мультипроцессора, и я пытался вызвать класс из другого файла как отдельный процесс, однако я получаю эту ошибку:

Traceback (most recent call last):
File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
self._target(*self._args, **self._kwargs)
TypeError: 'tuple' object is not callable

, и она все еще существуетв том же процессе, что и мой стандартный вывод, это:

20472 __main__
20472 CALL
internal func call
Leaving Call
Process Process-1:
#This is where the error prints out
Leaving main

, где 20472 - это pid.

Основной файл:

import CALL
from multiprocessing import Process
import os

if __name__ == '__main__':
    print(os.getpid(),__name__)
    p = Process(target=(CALL.Call(),))
    p.start()
    p.join()
    print("Leaving main")

import os

Файл класса вызова:

class Call():

    def __init__(self):
        print(os.getpid(), __name__)
        self.internal()

    def __exit__(self):
        print("Leaving Call")

    def internal(self):
        print("internal func call")
        self.__exit__()

1 Ответ

0 голосов
/ 30 августа 2018

Как ответил в комментариях @Jeronimo - изменение

p = Process(target=(call.Call(),)

на

p = Process(target=(call.Call))

было решением, дающим правильный вывод:

2965 __main__
2966 CALL
internal func call
Leaving Call
Leaving main

сотдельный процесс для вызываемого класса.

...