在 python 中创建包含无限循环的进程
Creating processes that contains infinite loop in python
我想在不等待其他进程完成的情况下创建进程,但它们无法完成,因为它们处于无限循环中。
import time
from multiprocessing import Process
def child_function(param1, param2):
print(str(param1 * param2))
while True:
print("doing some stuff")
time.sleep(3)
def main_function():
print("Initializing some things.")
for _ in range(10):
Process(target=child_function(3, 5)).start()
if __name__ == '__main__':
main_function()
此代码只启动一个进程并等待它完成。我该怎么做?
编辑:评论答案工作正常,下面的答案也工作正常,但用于创建线程。谢谢大家。
试试这个 Python 模块 Threading
import time
import threading
def child_function(param1, param2):
print(str(param1 * param2))
while True:
print("doing some stuff")
time.sleep(3)
def main_function():
print("Initializing some things.")
for _ in range(10):
x = threading.Thread(target=child_function, args=(3,5, ))
x.start()
main_function()
解释:正如在评论中已经提到的,注意我们正在传递函数而不是通过线程构造函数调用它, 您也可以比较 Threading vs Multiprocessing 并使用最适合项目的那个。
我想在不等待其他进程完成的情况下创建进程,但它们无法完成,因为它们处于无限循环中。
import time
from multiprocessing import Process
def child_function(param1, param2):
print(str(param1 * param2))
while True:
print("doing some stuff")
time.sleep(3)
def main_function():
print("Initializing some things.")
for _ in range(10):
Process(target=child_function(3, 5)).start()
if __name__ == '__main__':
main_function()
此代码只启动一个进程并等待它完成。我该怎么做?
编辑:评论答案工作正常,下面的答案也工作正常,但用于创建线程。谢谢大家。
试试这个 Python 模块 Threading
import time
import threading
def child_function(param1, param2):
print(str(param1 * param2))
while True:
print("doing some stuff")
time.sleep(3)
def main_function():
print("Initializing some things.")
for _ in range(10):
x = threading.Thread(target=child_function, args=(3,5, ))
x.start()
main_function()
解释:正如在评论中已经提到的,注意我们正在传递函数而不是通过线程构造函数调用它, 您也可以比较 Threading vs Multiprocessing 并使用最适合项目的那个。