所以,我有两个具有两个无限循环的类函数的代码示例:
class Bot:
def __init__(self):
self.rocket = 0
def func1(self):
while True:
self.rocket += 1
def func2(self):
while True:
print(self.rocket)
我希望它们 func1 和 func2 同时工作。这只是一个例子,我不需要这样的解决方案:
class Bot:
def __init__(self):
self.rocket = 0
def func1(self):
while True:
self.rocket += 1
print(self.rocket)
因为我想要一个方法如何在类中运行两个具有无限循环的函数;)谢谢!我试过这个,但导致错误:
from multiprocessing import Process
class Bot:
def __init__(self):
self.rocket = 0
def func1(self):
while True:
self.rocket += 1
def func2(self):
while True:
print(self.rocket)
if __name__ == '__main__':
p1 = Process(target=func1)
p2 = Process(target=func2)
p1.start()
p2.start()
- 您需要一个
Bot
实例来调用func1
并func2
-
使用
threading.Thread
而不是multiprocessing.Process
,要获取详细信息,请阅读线程和多处理模块之间有什么区别? ,这里要得到的重点是默认情况下,线程共享数据;进程不共享数据。
使用Process
您只会看到0
打印,func1
进程将有自己的数据和更新rocket
,并且func2
进程将无法使用它,使用Thread
他们将共享数据
if __name__ == '__main__':
from threading import Thread
b = Bot()
p1 = Thread(target=b.func1)
p2 = Thread(target=b.func2)
p1.start()
p2.start()