我正在运行Python 3
,并试图为threads
创建自己的课程:
class myThread(multiprocessing.Process):
def __init__(self, i):
multiprocessing.Process.__init__(self)
self.i = i
def run(self):
while True:
print(self.i)
创建线程时,它不会输出i
:
multiprocessing.Process(target=myThread, args=[5]).start()
答案 0 :(得分:0)
您必须从继承自 threading.Thread 的类中创建实例,并使用start方法才能在 def run()块中启动该块:
import threading
class myThread(threading.Thread):
def __init__(self, i):
threading.Thread.__init__(self)
self.i = i
def run(self):
while True:
print(self.i)
for num in range(5): # number of threads to create
_definition = myThread(i = 'myoutput')
_definition.start()
答案 1 :(得分:0)
问题在于,这只会在进程中创建线程。它不会启动该线程。
multiprocessing.Process(target=myThread, args=[5])
您可以执行以下操作,但是以这种方式将线程和进程组合起来有点多余,因为可以使用进程的主线程来代替。
import threading
import multiprocessing
class myThread(threading.Thread):
def __init__(self, i):
threading.Thread.__init__(self)
self.i = i
def run(self):
while True:
print(self.i)
def wrapper(i):
t = myThread(i)
t.start()
t.join()
if __name__=="__main__":
p = multiprocessing.Process(target=wrapper, args=[5])
p.start()
p.join()
以下操作相同,但没有线程:
import multiprocessing
def my_target(i):
while True:
print(self.i)
if __name__=="__main__":
p = multiprocessing.Process(target=my_target, args=[5])
p.start()
p.join()