gpt4 book ai didi

python - 增加python中线程数的限制

转载 作者:行者123 更新时间:2023-12-01 04:34:27 24 4
gpt4 key购买 nike

我在 OS X 10.11 上使用 Python 2.7.10 的线程模块。

我想同时运行 50000 个 http 请求:

def save_data(device):
data = {
'id': device['id'],
'token': device['token'],
}

request = requests.post('http://localhost/save_data', data=data)
return request.status_code == 200


def save_data_thread(device, event):
event.wait()
result = save_data(device)
print 'Device id %d result: %r' % (device['id'], result)


devices = pickle.load(open('devices', 'r'))
threads = []

start_event = threading.Event()

print 'Creating threads...'

for i in range(len(devices)):
thread = threading.Thread(target=save_data_thread, args=(devices[i], start_event))
threads.append(thread)

print 'Starting threads...'

i = 0

for thread in threads:
thread.start()

i += 1
print 'Started %d threads' % i

start_event.set()

print 'Joining threads...'

for thread in threads:
thread.join()

print 'Working...'

但我遇到了异常(exception):

thread.error: can't start new thread

同时启动第 2048 个线程。我有足够的可用 RAM。

是否可以增加最大线程数?

最佳答案

如果您需要并行执行多个请求,您可以考虑使用异步方法的框架,例如:Twisted

Python GIL 一次只允许运行一个 Python 线程。

允许的线程数通常受操作系统限制。

编辑:

如果您想坚持使用线程方法,您可能需要以稍微不同的方式并行化您的工作。检查这个post寻找类似问题的解决方案。

关于python - 增加python中线程数的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31972322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com