python - 使用 for 循环限制程序的线程

标签 python multithreading python-2.7 python-3.x

我编写了以下代码,该代码使用 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/

相关文章:

python - 有没有什么办法可以让用户使用终端(无 GUI)的 Python 程序成为 Mac 的独立程序?

php - 用于发出简单 HTTP 请求的 Lambda 函数

python - 使用 Scipy 进行高斯滤波的意外行为

c++ - 为什么不能将互斥量传递给线程?

python-2.7 - 通过 python 脚本在 Jenkins 中构建作业

python - 如何在 pygame 中可视化 2 个蒙版的重叠区域?

java - 多线程文件服务器java

ruby 同步 : How to make threads work one after another in proper order?

python - 将函数应用于 Python 字典的所有键

python - Instagram API 使用 Python 并收集每个标题的评论