<commit_before>frugal_timeout
==============

[![Build Status](https://travis-ci.org/ledestin/frugal_timeout.png)](https://travis-ci.org/ledestin/frugal_timeout)
[![Coverage Status] (https://coveralls.io/repos/ledestin/frugal_timeout/badge.png)] (https://coveralls.io/r/ledestin/frugal_timeout)
[![Code Climate](https://codeclimate.com/github/ledestin/frugal_timeout.png)](https://codeclimate.com/github/ledestin/frugal_timeout)

Ruby Timeout.timeout replacement using only 2 threads

## Why

As you may know, the stock Timeout.timeout uses thread per timeout call. If you
use it a lot, you will soon be out of threads. This gem is to provide an
alternative that uses only 2 threads.

## Example

```
require 'frugal_timeout'<commit_msg>* Updated README.md.<commit_after>frugal_timeout
==============

[![Build Status](https://travis-ci.org/ledestin/frugal_timeout.png)](https://travis-ci.org/ledestin/frugal_timeout)
[![Coverage Status] (https://coveralls.io/repos/ledestin/frugal_timeout/badge.png)] (https://coveralls.io/r/ledestin/frugal_timeout)
[![Code Climate](https://codeclimate.com/github/ledestin/frugal_timeout.png)](https://codeclimate.com/github/ledestin/frugal_timeout)

Ruby Timeout.timeout replacement using only 1 thread

## Why

As you may know, the stock Timeout.timeout uses thread per timeout call. If you
use it a lot, you will soon be out of threads. This gem is to provide an
alternative that uses only 1 thread.

## Example

```
require 'frugal_timeout'
{'fraction_non_alphanumeric': 0.145368492224476, 'fraction_numerical': 0.002704530087897228, 'mean_word_length': 5.5198237885462555, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 12, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '998242', 'n_tokens_mistral': 516, 'n_tokens_neox': 497, 'n_words': 115}