Skip to main content

A threading library written in python

Project description

A threading library written in python. Help you build threaded app.

This module was originally included in ComicCrawler.

Features

  • Pause, resume, stop and restart thread.

  • Create child thread.

  • Create async task.

  • Communicate between threads with events.

  • Use channel to broadcast event.

Install

pip install pythreadworker

Usage

Basic

#! python3

from worker import Worker, sleep

count = None

def increaser():
        global count
        count = 1
        while True:
                print(count)
                count += 1
                sleep(1)

thread = Worker(increaser)

while True:
        command = input("input command: ")

        if command == "pause":
                thread.pause()

        if command == "resume":
                thread.resume()

        if command == "stop":
                thread.stop()

        if command == "start":
                thread.start()

        if command == "exit":
                thread.stop()
                break

Async task

#! python3

from worker import Async, sleep

def long_work(t):
        sleep(t)
        return "Finished in {} second(s)".format(t)

async = Async(long_work, 5)

# Do other stuff here...

print(async.get())

Listen to event

#! python3

from worker import Worker

def create_printer():
        thread = Worker()

        @thread.listen("PRINT")
        def _(event):
                print(event.data)

        return thread.start()

thread = create_printer()
thread.fire("PRINT", "Hello thread!")
thread.stop()

Subscribe to channel

#! python3

from worker import Worker, Channel

def create_worker():
        thread = Worker()
        @thread.listen("PRINT")
        def _(event):
                print(event.data)
        channel.sub(thread)
        return thread.start()

channel = Channel()
thread = create_worker()
channel.pub("PRINT", "Hello channel!")
thread.stop()

Child thread and bubble/broadcast

#! python3

from worker import Worker, sleep

def create_worker(name, parent):
        thread = Worker(parent=parent)
        @thread.listen("HELLO")
        def _(event):
                print(name)
        return thread.start()

parent = create_worker("parent", None)
child = create_worker("child", parent)
grand = create_worker("grand", child)

# broadcast/bubble is happened in main thread. It doesn't gaurantee the execution order of listeners.
parent.fire("HELLO", broadcast=True)
sleep(1)
grand.fire("HELLO", bubble=True)
sleep(1)

# stop a thread will cause its children to stop
parent.stop()

Notes

Changelog

  • 0.6.0 (Jul 1, 2016)

    • Add thread.later.

  • 0.5.1 (Apr 22, 2016)

    • Use float in sleep function.

  • 0.5.0 (Apr 22, 2016)

    • Add sync.

  • 0.4.0 (Apr 20, 2016) breaking change

    • Interface completely changed

    • Drop Message.put, .get

    • Drop UserWorker

    • Drop Worker.create_child. Use parent option in constructor instead.

    • Drop global_cleanup

    • Add sleep

    • Add current

    • Add Channel

    • Add Listener.priority

    • Add daemon option to Worker

    • Worker.cleanup –> Worker.update

    • Worker.message –> Worker.fire

    • Worker.wait_message –> Worker.wait_event

    • Worker.message_loop –> Worker.wait_forever

  • 0.3.0 (Jun 14, 2015)

    • Catch BaseException.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pythreadworker-0.6.0.zip (11.0 kB view details)

Uploaded Source

Built Distribution

pythreadworker-0.6.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file pythreadworker-0.6.0.zip.

File metadata

  • Download URL: pythreadworker-0.6.0.zip
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pythreadworker-0.6.0.zip
Algorithm Hash digest
SHA256 ea521a62012760dff5b35b3f83f670627f1f2856c687ea13b1c3dd8301bc9f79
MD5 6471ae7ec08e1d4a47fdf76b16f8f49f
BLAKE2b-256 596ceb95f9e91073d1e1be2773b04b86d349ddc735c21a0babab49558286a06a

See more details on using hashes here.

File details

Details for the file pythreadworker-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pythreadworker-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 94ae02aa7c29d1a12a1965a2c30ecf8b6fb2535df67accc5c944851607025d33
MD5 11ff498f5bd21b6d321fb0546846bc19
BLAKE2b-256 d0626631c5c1e5394a99deac679f650f9b5cfb373e26d28265e089ff6b634486

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page