Skip to main content

BatchScript

使用多进程+线程池+队列运行你的方法

$> pip3 install BatchScript
# or
$> git clone https://github.com/TaylorHere/BatchScript.git && cd BatchScript && pip3 install -e .
# and you can test it
$> cd BatchScript && python3 test.py
from master import Master
from worker import Worker
import helper 
import os

class Config():

	MaxWorkerSize = os.cpu_count() - 1  #worker数量

	MaxThreadPoolSize = 1024  #每个worker的线程池大小

	ThreadQueueWaitTimeout = 0.01  #worker在job队列上获取数据的超时, 超时后会立即开始批量线程提交

	WorkerGetBatchSize = MaxThreadPoolSize  #额定批大小, 如果worker获取数据时不超时, 那么在获取都这个数量后便开始批量线程提交

	JobsResultsQueueNum = MaxWorkerSize #jobs 和 results 队列对的数量, 该数量如果小于worker数量, 则最后一对会被未分配的worker共用, 共用队列可能会导致锁操作增加

	ResultsBatch = True #将一个batch的所有result当作一个result放入result 队列中

master = Master(func=helper.sleep, config=Config())
master.start()
for i in range(1000):
    master.job_put(0.01)

while True:
    print(master.result().get())

链接多个 master

from master import Master
from worker import Worker
import helper 

master = Master(func=helper.sleep)
master.start()

for i in range(1000):
    master.job_put(0.01)

another_master = Master(func=print, connection=master)#该master会将connection的master的results队列作为jobs队列, 如果该master的队列对比链接master的队列对数量少, 会造成链接master的result不能被全部消耗
another_master.start()

采用 多进程启动Worker, worker维护线程池运行函数的方案 master内建和worker关联的多个任务队列和对应的多个结果队列 worker按batch从任务队列中获取数据并使用线程池提交运行 批量结束后将任务结果put到结果队列

你可以在config中调整

import os

MaxWorkerSize = os.cpu_count() - 1  #worker数量

MaxThreadPoolSize = 1024  #每个worker的线程池大小

ThreadQueueWaitTimeout = 0.01  #worker在job队列上获取数据的超时, 超时后会立即开始批量线程提交

WorkerGetBatchSize = MaxThreadPoolSize  #额定批大小, 如果worker获取数据时不超时, 那么在获取都这个数量后便开始批量线程提交

JobsResultsQueueNum = MaxWorkerSize #jobs 和 results 队列对的数量, 该数量如果小于worker数量, 则最后一对会被未分配的worker共用, 共用队列可能会导致锁操作增加

ResultsBatch = True #将一个batch的所有result当作一个result放入result 队列中

Release files for BatchScript 0.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for BatchScript 0.0.9
File Size Uploaded
BatchScript-0.0.9.tar.gz 4.2 kB Details

Release files / BatchScript-0.0.9.tar.gz

Download URL BatchScript-0.0.9.tar.gz
Size 4.2 kB
Tags Source
SHA-256 checksum
How to use checksums
47565f77cc99aab1e8e721c62b30fc37880a33a9b57e6c370c97eaf6767bfff8
BLAKE2b-256 checksum
How to use checksums
ae323642b800d4c136803404d1bc09a7e922264a0fd848df6e3736f62e34bfc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.3.1 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.6.10

Release history Release notifications | RSS feed

This release

0.0.9 This release

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page