作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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/
我是一名优秀的程序员,十分优秀!