我编写了以下代码,该代码使用 subprocess 方法在 2 个 for 循环下运行命令,
import threading
import subprocess
def do (i,j):
subprocess.Popen(['python2.7 some_python_code.py {} {}'.format(i,j)],shell=True,stdout=subprocess.PIPE)
z=[]
for i in range (0,50):
for j in range (0,50):
t = threading.Thread(target=do, args=(i,j))
t.start()
z.append(t)
for t in z:
t.join()
问题是它突然启动了大量的python进程并吃掉了我的全部内存,我该如何限制线程数?
谢谢。
最佳答案
也许如果您使用选项setDaemon,您可以改善这个问题,我将在此处放置一个引用链接,请阅读“Daemon vs noDaemon”部分。 https://pymotw.com/2/threading/
默认情况下此选项未激活,您可以通过以下方式激活:
daemon_thread = threading.Thread(name='MyDaemon', target=do_some_stuff)
daemon_thread.setDaemon(True)
如果第一个选项无法解决问题,您可以检查以下链接 How to reduce memory usage of threaded python code?希望该链接可以帮助您,祝您好运!
关于python - 使用 for 循环限制程序的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656876/