Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve work distribution. #2

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Improve work distribution. #2

wants to merge 4 commits into from

Conversation

lipk
Copy link

@lipk lipk commented Jul 5, 2019

When you have, say, 25 tests and 8 groups, the current work distribution formula will determine the group size at 4 and then the first 6 groups will be assigned 4 tests each, the 7th will get 1 and the 8th will get 0. This is bad first because it's not as uniform as it could be and second because group 8 will throw an exception (at line 21).

I replaced the formula to fix these issues. Now, all groups get to run at least items // groups tests, and the first items % groups groups will receive an extra one. Therefore, the difference between the number of items assigned to any two group will be at most 1. Also, groups with 0 assigned items no longer raise an exception.

@lipk
Copy link
Author

lipk commented Jul 5, 2019

I've just realized that this project has tests and I just broke them. Please ignore the PR until I fix that :)

@lipk
Copy link
Author

lipk commented Jul 5, 2019

Okay, fixed the tests. Found a bug in my code, fixed that too.


return items[start:end]
start, size = get_group_size_and_start(len(items), total_groups, group_id)
return items[start:start+size]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could replace all of this with:

return items[group_id:len(items):group_size]

This is the three-argument slice-operator: [start:end:step].

@bodharma
Copy link

bodharma commented Apr 7, 2020

@wchill how to reach you?
I have the same issue for pytest-split-tests library:
mark-adams#19 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants