是否可以在函数内运行线程(该函数将作为过程运行(,如果多少?
这是一个示例:
def process_one():
def one():
while True:
print("one")
time.sleep(1)
def two():
while True:
print("two")
time.sleep(1)
def three():
while True:
print("three")
time.sleep(1)
a = Thread(target=one)
b = Thread(target=two)
c = Thread(target=three)
a.start()
b.start()
c.start()
if __name__ == '__main__':
p1 = Process(target=process_one)
p1.start()
是的,这是可能的。
您甚至可以通过启动它并使用任务管理器/活动监视器/系统监视器来测试此示例。您应该看到一个父母和一个孩子的过程。儿童进程应该开始3个线程。
至于可以启动多少个线程的问题,这实际上取决于您的用例。
给定示例上的几个提示:
- 在此示例中,您必须在至少线程上使用
join
。如果您不这样做,儿童过程很快完成, - 由于在儿童过程中开始线程,因此您必须注意如何处理线程生命周期,
- 由于您可以杀死父母,因此子进程继续生存,因此这是要注意的另一件事。
可能还有其他角色案例,但是如果您决定使用流程和线程并发并进行同时进行彻底研究。